Szó

A Programozás Wiki wikiből

A szó (word) az adatfeldolgozás natív egysége, bitek azon csoportja, amelyeket a rendszer egyetlen egységként kezel (ír, olvas, mozgat). A tipikus szóhossz 8, 16 vagy 32 - vagy újabban 64 - bit szokott lenni, de elképzelhetőek ettől eltérő szóméretek is.

Hardverarchitektúrák esetében gyakran - de nem feltétlenül - az adatbusz szélessége határozza meg a natív szóméretet, azaz az egyszerre írható vagy olvasható bájtok számát.

A szónál kisebb adatmezőn történő műveletvégzés általában lassabb, mint a szó méretű operátorokkal végrehajtott művelet, előbbi esetben ugyanis a feldolgozó egység kénytelen először beolvasni az adott mezőt befoglaló szót, a megfelelő bitjeit kimaszkolni vagy a műveletnek megfelelően módosítani, majd írás esetén szintén egy plusz ciklusban a kombinált eredményt visszaírni; ez pedig jóval lassabb, mint a szó méretű mező közvetlen olvasása vagy írása egyetlen lépésben. Még rosszabb az eredmény, ha az adatmező szóhatáron is átlóg, ez esetben ugyanis két különböző (az adott mező egy-egy darabját befoglaló, egymással szomszédos) szón is el kell végezni ezt a hármas ciklust. Ez okból kifolyólag ha a futási idő fontosabb, mint a tárigény, a programokban a struktúrákat, mezőket érdemes mindig szóhatárra igazítani (word align), ill. a szóméretnél kisebb mezőket is szóméretűre kiterjeszteni, hogy a velük történő műveletvégzés ne igényeljen plusz feldolgozási ciklusokat.

Egyes rendszerekben és környezetekben - történelmi, kompatibilitási okok miatt - a "szó" alatt nem a rendszer natív szóhosszát, hanem egy fix szóméretet szokás érteni. Pl. az x86 architektúra esetében "szó" alatt a 2 bájtos, 16-bites szóméretet szokták érteni, míg a 386, 486 és Pentium család natív szóméretét képező 4 bájtos, 32-bites szóméretet "duplaszó"-nak (double word, dword) nevezik, a 64-bites processzorok natív szóméretét képező 8 bájtos, 64-bites szóméretre pedig "négyesszó" (quadword, qword) kifejezéssel szoktak hivatkozni, ill. a különböző programozási nyelvekben is az előbbi rend szerint alakul a "word", "dword", "qword" típusú mezők mérete, függetlenül attól, hogy valójában a futtató processzor natív szóhossza ettől eltérő (is lehet).