Реч (архитектура рачунара)
Битови |
---|
Бит |
Апликација |
Прецизност бинарног покретног зареза |
Прецизност деминалног покретног зареза |
У рачунарству, реч је термин за природне јединице података које користе одређени дизајн процесора. Реч је део податка фиксне величине који рукује као целина од стране скупа инструкција или хардвера процесора. Број бита у речи (величина текста, ширина речи, или дужина речи) је битна карактеристика било ког специфичног дизајна процесора или архитектуре рачунара.
Величина речи огледа се у многим аспектима структуре и операције рачунара; већина регистара у процесору су обично величине речи и највећи део података који се могу пренети у и из радне меморије у једној операцији је реч у многим (не свим) архитектурама. Највећа могућа величина адресе, коришћена да означи локацију у меморији, обично је реч хардвера (овде ", хардвер реч" означава пуне величине природе речи процесора, за разлику од било које друге коришћене дефиниције).
Модерни процесори, укључујући уграђене системе, обично имају реч величине 8, 16, 24, 32, или 64 бита, док модерни, опште намене рачунари, обично користе 32 или 64 бита. Наменски дигитални процесори, као што су DSP-ови на пример, могу да користе и друге величине и много различитих величина које су коришћене у прошлости, укључујући 8, 9, 12, 18, 24, 36, 39, 40, 48, и 60 бита. Плоча је пример система са ранијом величином речи. Неколико најстаријих рачунара (и неки модерни такође) користи BCD пре него обичан бинарни систем, обично имају реч величине 10 или 12 децималних цифара, а неки рани децимални рачунари нису имали фиксну дужину речи уопште.
Величина речи се понекад може разликовати од очекиваног због компатибилности са ранијим рачунарима. Ако више компатибилне варијације или фамилија процесора деле заједничку архитектуру и сет инструкција али се разликују у својим величинама речи, њихова документација и софтвер могу постати нотациони комплекс за смештај разлике (види величину породице испод).
Коришћење речи
[уреди | уреди извор]У зависности од тога како је организован рачунар, јединице величине речи могу да се користе за:
- Фиксни број тачака
- Држачи за фиксну тачку, обично је то цео број, нумеричке вредности могу бити доступне у једној или у више различитих димензија, али једна од доступних величина ће скоро увек бити реч. Остале величине, ако их има, вероватно ће бити дељиве или фракције величине речи. Мање величине се обично користе само за ефикасну употребу меморије; када се учитају у процесор, њихове вредности обично иду у већу, реч величине држача.
- Покретан број тачака
- Држачи за покретан број тачака нумеричке вредности су обично или реч или више речи.
- Адресе
- Носиоци за меморијске адресе морају бити величине која је у стању да изрази потребан опсег вредности, али неће бити претерано велика, тако често величина користи је реч мада то може бити вишеструко или део величине речи.
- Регистри
- Регистри процесора су дизајнирани са величином погодном за врсту података које држе, нпр. целих бројева, флоут бројева тачака или адреса. Многе рачунарске архитектуре користе "опште наменске регистре" које могу да држе било који од више врста података, ови регистри морају бити такве величине која ће да држи највећи од врсте, историјски ово је величина речи архитектуре, иако све специјалне намене, веће, регистри имају додане да се баве новим типовима.
- Пренос меморија-процесор
- Када процесор чита из подсистема меморије у регистар или пише вредности регистра у меморију, количина пренетих података је често реч. У једноставним меморијским подсистемима, реч се преноси преко магистрале података меморије, која обично има ширину велеичине речи или пола речи. У меморијским подсистемима који користе кеш, трансфер величине речи је онај између процесора и првог нивоа кеша; на нижим нивоима хијерархије меморије већих трансфера (који су вишеструки величине речи) се обично користе.
- Јединица резолуције адресе
- У датој архитектури, узастопне адресе вредности одређују узастопне јединице меморије; ова јединица је јединица резолуције адресе. У већини рачунара, јединица је или карактер (нпр. бајт) или реч. (Неколико рачунара је користило резолуцију бита.) Ако је јединица реч, онда се већој количини меморије може приступити користећи адресу дате величине по цени додате сложености како би се приступило појединачним знаковима. С друге стране, ако је јединица бајт, онда поједини карактери могу адресирани (тј. изабрани током операције меморије).
- Инструкције
- Упутства машине су обично величине архитектуре речи, као што су RISC архитектуре, или вишеструка "чар" величине која је део тога. Ово је природан избор јер инструкције и подаци обично деле исти меморијски подсистем. У Харвард архитектури речи величине инструкција и података не морају бити повезане, као и упутства и подаци се чувају у различитим меморијама; на пример, процесор у 1ЕSS електронској телефонској централи имао је 37-битне инструкције и 23-битне речи података.
Избор величине речи
[уреди | уреди извор]Када је архитектура рачунара дизајнирана, избор величине речи је од суштинског значаја. Постоје разматрања дизајна којима се подстичу одређене величине група бит за одређене намене (нпр. адресе), и ова разматрања указују на различите величине за различите намене. Међутим, разматрања економије у дизајну снажно се залажу за једну величину, или веома мале величине везане за више њих или фракције (умножака) на примарну величину. Та пожељна величина постаје величина речи архитектуре.
Величина знакова је у прошлости (пре величине променљивих карактера кодирања) један од утицаја на јединици резолуције адреса и избор величине речи. Пре него што су средином 1960-их, ликови најчешће чувани у шест бита; ово је дозвољавало не више од 64 карактера, тако да су алфабетици били ограничени великим словима. Пошто је ефикасно у времену и простору да имају величину речи и да буду вишеструке величине карактера, величине речи у овом периоду су обично дељиве са 6 бита (у бинарним машинама). Заједнички избор онда је 36-битна реч, што је такође добра величина за нумеричка својства плутајућег формата тачака.
Након увођења дизајна IBM-овог система / 360 , који је користио осмобитне знакове и подржавао мала слова, стандардне величине карактера (или прецизније, бајт) постао је осам битова. Величине речи након тога су природно дељиве са осам бита, са 16, 32 и 64 бита и то се најчешће користило.
Архитектуре речи променљиве
[уреди | уреди извор]Рани дизајн машина укључивао је и неке које су користиле оно што се често назива дужином речи променљиве. У овој врсти организације, нумеричка операнда није имала фиксну дужину, већ је њен крај откривао када је ознака наишла на карактер са посебном ознаком. Такве машине су често користиле бинарно кодиране децимале за бројеве. Ова класа машина је укључивала IBM 702, IBM 705, IBM 7080, IBM 7010, UNIVAC 1050, IBM 1401, и IBM 1620.
Већина ових машина ради на једној јединици меморије у исто време и пошто је свака инстукција или податак дужине неколико јединица, свакој инструкција је потребно неколико циклуса само да приступи меморији. Ове машине су често прилично споре због тога. На пример, инструкција која добавља на IBM 1620 моделу узима 8 циклуса само да прочитата 12 цифара инструкције модел II је смањио ово на 6 циклуса, или 4 циклуса ако упутству нису требала оба поља адресе). Извршење инструкција је узело потпуно променљиви број циклуса, у зависности од величине операнада.
Адресирање речи и бајта
[уреди | уреди извор]Модел меморије неке архитектуре је под јаким утицајем величине речи. Посебно резолуција меморијске адресе, то јест, најмања јединица која може да се одреди помоћу адресе, често је изабрана да буде реч. У овом приступу, вредности адресе које се разликују за једну одређују поред меморијских речи. То је природно у машинама које се баве готово увек у речима (или са више речи) јединица, и има предност што омогућава инструкцијама да користе минималне величине поља да садрже адресе, које могу дозволити мању величину инструкција или већи низ инструкција.
Када обрада бајта постане значајан део посла, обично је повољније да се користи бајт, а не реч, као јединица резолуције адресе. Ово омогућава произвољном карактеру у низ карактера да буде право адресиран. Реч још увек може бити адресирана, али адреса која ће се користити захтева још неколико битова више него алтернатива речи резолуције. Величина реч треба да буде вишеструки цео број величине карактера у овој организацији. Овај приступ решавању је коришћен у IBM 360, и био је најчешћи приступ у машинама дизајнираним од тада.
Појединачним бајтовима се може приступити на машини оријентисаној речју на један од два начина. Бајтовима се може манипулисати комбинацијом смене и маске операција у регистрима. Померање једног бајта од једне произвољне локације на другу може захтевати еквивалент следећег:
- LOAD реч која садржи изворни бајт
- SHIFT изворна реч која треба да усклади жељени бајт у исправан положај у означеној речи
- AND изворна реч са маском до нуле све осим жељеног бита
- LOAD реч која садржи означени бајт
- AND означена реч са маском до нуле кроз означени бајт
- OR регистри који садрже изворне и означене речи да који треба да убаце изворни бајт
- STORE повратни резултат на означеној локацији
Алтернативно многе машине речју оријентисане спроводе операције бајтова са инструкцијама које користе посебне показиваче бајтова у регистре или меморију. На пример PDP-10 показивач бајта садржи величину бајта у битовима (дозвољава да се различитим величинама бајтова може приступити), брзину положаја бајта у оквиру реч, и адресу речи података. Упутства могу аутоматски да подесе показивач на следећи бајт, на пример, учитавање и депозит (складиштење) операција.
Експонент двојке
[уреди | уреди извор]Различитие количине меморије се користе за чување вредности података са различитим степенима прецизности. Уобичајене величине су обично експонент двојке, вишеструке јединице резолуције адреса (бајт или реч). Претварање индекса ставке у низу у адресу ставке онда захтева само операцију смене уместо умножавања. У неким случајевима овај однос може да избегне употребу поделе рада. Као резултат тога, већина дизајна модерних рачунара има величине реч (и друге величине операнди) који су снага двоструке величине бајта.
Величина породице
[уреди | уреди извор]Како је рачунарски дизајн постао сложенији, централни значај појединачне величине архитектуре речи је смањен. Иако способнији хардвер може користити шири спектар величина података, тржишне снаге врше притисак да се одржи компатибилност док је се проширују могућности процесора. Као резултат тога, шта би могла да буде централна величина речи у свежем дизајну треба да коегзистира као алтернативна величина до оригиналне величине речи у компатибилном дизајну. Оригинални величина речи остаје на располагању у будућим пројектима, формирајући основу за величину породице.
Средином 1970-их, DEC је дизајнирао VAX да буде наследник PDP-11. Они су користили реч за 16-битну количину, док се дуга реч односила на 32-битну количину. То је у супротности са ранијим машинама, где би се природна јединица обраћања меморије назвала речју, док ће се количина која је половина речи звати halfword . У уклапање са овом шемом, VAX quadword је 64 бита.
Други пример је x86 породица, од које су процесори три различите дужине речи (16-битни, касније 32- и 64-битни) објављени. Како је софтвер рутински портован од дужине једне речи до друге, неки APIs (Апликациони програмски интерфејс) и документација дефинишу или се односе на старију (а тиме и краћу) дужину речи уместо пуне дужине речи на CPU за који софтвер може бити састављен. Такође, слично начину на који се бајтови користе за мале бројеве у многим програмима, краћа реч (16 или 32 бита) може да се користи у контекстима у којима није потребан распон шире речи (нарочито када то може да уштеди значајни стек простор или кеш меморијски простор). На пример,Microsoft's Windows API одржава дефиницију програмског језика WORD (речи) као 16 бита, упркос чињеници да API може да се користи на 32 или 64-битном x86 процесору, где би стандардна величина речи била 32 или 64 бита . Структуре података које садрже такве различите величине речи односе се на њих као WORD (16 бита / 2 бајта), DWORD (32 бита / 4 бајта) и QWORD (64 бита / 8 бајтова). Сличан феномен је развијен у Интеловом x86 асемблерском језику - због подршке различитих величина (и компатибилности) у сету инструкција, нека инструкција мнемотехнике носи идентификатор "d" или "q" који означава " дупло" "четвороструко" или "двоструко-четвороструко-", које су у погледу архитектуре оригиналне 16-битне величине речи.
У принципу, нови процесори морају користити исте дужине података речи и виртуелну адресу ширине као старији процесор тако да имају бинарну компатибилност са тим старијим процесором.
Често пажљиво написани изворни код - писан са изворног кода компатибилности и преносивости софтвера на уму - може бити прекомпилиран тако да ради на различитим процесорима, чак и на оним са различитим дужинама речи података или различитој адреси ширине или обоје.
Табела величина речи
[уреди | уреди извор]кључ: b: битови, d: децималне цифре, w: величина речи архитектуре, n: величина променљиве | |||||||
---|---|---|---|---|---|---|---|
Година | Архитектура
рачунара |
Величина речи
w |
Цео број величине | Покретна тачка величине | Инструкција величине | Јединица адресе резолуције | Знак величине |
1837 | Бебиџова Аналитичка машина | 50 d | w | — | Пет различитих карата је коришћено за различите функције, тачна величина карата није позната | w | — |
1941 | Zuse Z3 | 22 b | — | w | 8 b | w | — |
1942 | АБС | 50 b | w | — | — | — | — |
1944 | Харвард Марк 1 | 23 d | w | — | 24 b | — | — |
1946 (1948) {1953} | ENIAC
(w/ Panel #16[1]) {w/ Panel #26[2]} |
10 d | w, 2w
(w) {w} |
— | —
(2d, 4d, 6d, 8d) {2d, 4d, 6d, 8d} |
—
— {w} |
— |
1951 | UNIVAC I | 12 d | w | — | ½w | w | 1 d |
1952 | IAS machine | 40 b | w | — | ½w | w | 5 b |
1952 | Fast Universal Digital Computer M-2 | 34 b | w? | w | 34 b = 4 b опкод плус 3× 10 b адреса | 10 b | — |
1952 | IBM 701 | 36 b | ½w, w | — | ½w | ½w, w | 6 b |
1952 | UNIVAC 60 | n d | 1d, ... 10d | — | — | — | 2d, 3d |
1953 | IBM 702 | n d | 0d, ... 511d | — | 5d | d | 1 d |
1953 | UNIVAC 120 | n d | 1d, ... 10d | — | — | — | 2d, 3d |
1954 (1955) |
IBM 650 (w/IBM 653) |
10 d | w | — (w) |
w | w | 2 d |
1954 | IBM 704 | 36 b | w | w | w | w | 6 b |
1954 | IBM 705 | n d | 0d, ... 255d | — | 5d | d | 1 d |
1954 | IBM NORC | 16 d | w | w, 2w | w | w | — |
1956 | IBM 305 | n d | 1d, ... 100d | — | 10d | d | 1 d |
1957 | Autonetics Recomp I | 40 b | w, 79 b, 8d, 15d | — | ½w | ½w, w | 5 b |
1958 | UNIVAC II | 12 d | w | — | ½w | w | 1 d |
1958 | SAGE | 32 b | ½w | — | w | w | 6 b |
1958 | Autonetics Recomp II | 40 b | w, 79 b, 8d, 15d | 2w | ½w | ½w, w | 5 b |
1958 | Setun | 6 трит (~9.5 b) | up to 6 Трит | до 3 Трита | 4 trit? | ||
1959 | IBM 1401 | n d | 1d, ... | — | d, 2d, 4d, 5d, 7d, 8d | d | 1 d |
1959 (TBD) |
IBM 1620 | n d | 2d, ... | — (4d, ... 102d) |
12d | d | 2 d |
1960 | LARC | 12 d | w, 2w | w, 2w | w | w | 2 d |
1960 | CDC 1604 | 48 b | w | w | ½w | w | 6 b |
1960 | IBM 1410 | n d | 1d, ... | — | d, 2d, 6d, 7d, 11d, 12d | d | 1 d |
1960 | IBM 7070 | 10 d | w | w | w | w, d | 2 d |
1960 | PDP-1 | 18 b | w | — | w | w | 6 b |
1960 | Elliott 803 | 39 b + 1 parity | |||||
1961 | IBM 7030 (Растезање) |
64 b | 1b, ... 64b, 1d, ... 16d |
w | ½w, w | b, ½w, w | 1 b, ... 8 b |
1961 | IBM 7080 | n d | 0d, ... 255d | — | 5d | d | 1 d |
1962 | GE-6xx | 36 b | w, 2 w | w, 2 w, 80 b | w | w | 6 b, 9 b |
1962 | UNIVAC III | 25 b | w, 2w, 3w, 4w, 6d, 12d | — | w | w | 6 b |
1962 | Autonetics D-17B Minuteman I Смернице рачунара |
27 b | 11 b, 24 b | — | 24 b | w | — |
1962 | UNIVAC 1107 | 36 b | ⅙ w, ⅓w, ½w, w | w | w | w | 6 b |
1962 | IBM 7010 | n d | 1d, ... | — | d, 2d, 6d, 7d, 11d, 12d | d | 1 d |
1962 | IBM 7094 | 36 b | w | w, 2w | w | w | 6 b |
1963/1966 | PDP-6/PDP-10 | 36 b | w | w, 2 w | w | w | 6 b, 9 b (typical) |
1963 | Gemini Guidance Computer | 39 b | 26 b | — | 13 b | 13 b, 26 b | — |
1963 (1966) |
Apollo Guidance Computer | 15 b | w | — | w, 2w | w | — |
1963 | Saturn Launch Vehicle Digital Computer | 26 b | w | — | 13 b | w | — |
1964 | CDC 6600 | 60 b | w | w | ¼w, ½w | w | 6 b |
1964 | Autonetics D-37C Minuteman II Смернице рачунара |
27 b | 11 b, 24 b | — | 24 b | w | 4 b, 5 b |
1965 | IBM 360 | 32 b | ½w, w, 1d, ... 16d |
w, 2w | ½w, w, 1½w | 8 b | 8 b |
1965 | UNIVAC 1108 | 36 b | ⅙ w, ¼w, ⅓w, ½w, w, 2w | w, 2w | w | w | 6 b, 9 b |
1965 | PDP-8 | 12 b | w | — | w | w | 8 b |
1970 | PDP-11 | 16 b | w | 2w, 4w | w, 2w, 3w | 8 b | 8 b |
1971 | Intel 4004 | 4 b | w, d | — | 2w, 4w | w | — |
1972 | Intel 8008 | 8 b | w, 2d | — | w, 2w, 3w | w | 8 b |
1972 | Calcomp 900 | 9 b | w | — | w, 2w | w | 8 b |
1974 | Intel 8080 | 8 b | w, 2w, 2d | — | w, 2w, 3w | w | 8 b |
1975 | ILLIAC IV | 64 b | w | w, ½w | w | w | — |
1975 | Motorola 6800 | 8 b | w, 2d | — | w, 2w, 3w | w | 8 b |
1975 | MOS Tech. 6501 MOS Tech. 6502 |
8 b | w, 2d | — | w, 2w, 3w | w | 8 b |
1976 | Cray-1 | 64 b | 24 b, w | w | ¼w, ½w | w | 8 b |
1976 | Zilog Z80 | 8 b | w, 2w, 2d | — | w, 2w, 3w, 4w, 5w | w | 8 b |
1978 (1980) |
16-bit x86 (Intel 8086) (w/покретна тачка: Intel 8087) |
16 b | ½w, w, 2d | — (2w, 4w, 5w, 17d) |
½w, w, ... 7w | 8 b | 8 b |
1978 | VAX | 32 b | ¼w, ½w, w, 1d, ... 31d, 1b, ... 32b | w, 2w | ¼w, ... 14¼w | 8 b | 8 b |
1979 (1984) |
Motorola 68000 series (w/покретна тачка) |
32 b | ¼w, ½w, w, 2d | — (w, 2w, 2½w) |
½w, w, ... 7½w | 8 b | 8 b |
1985 | IA-32 (Intel 80386) (w/покретна тачка) | 32 b | ¼w, ½w, w, 2d | — (w, 2w, 2½w, 17d) |
¼w, ½w, w, ... 3¾w | 8 b | 8 b |
1985 | ARMv1 | 32 b | ¼w, w | — | w | 8 b | 8 b |
1985 | MIPS | 32 b | ¼w, ½w, w | w, 2w | w | 8 b | 8 b |
1991 | Cray C90 | 64 b | 32 b, w | w | ¼w, ½w, 48b | w | 8 b |
1992 | Alpha | 64 b | 8b, ¼w, ½w, w | w, 2w | ½w | 8 b | 8 b |
1992 | PowerPC | 32 b | ¼w, ½w, w | w, 2w | w | 8 b | 8 b |
1996 | ARMv4 (w/Thumb) |
32 b | ¼w, ½w, w | — | w (½w, w) |
8 b | 8 b |
2001 | IA-64 | 64 b | 8 b, ¼w, ½w, w | ½w, w | 41 b | 8 b | 8 b |
2001 | ARMv6 (w/VFP) |
32 b | ¼w, ½w, w | — (w, 2w) |
½w, w | 8 b | 8 b |
2003 | x86-64 | 64 b | 8b, ¼w, ½w, w | ½w, w, 1¼w, 17d | 8b, ¼w, ½w, w, ... 1⅞w | 8 b | 8 b |
2013 | ARMv8-A | 64 b | 8b, ¼w, ½w, w | ½w, w | ½w | 8 b | 8 b |
кључ: b: битови, d: децималне цифре, w: величина речи архитектуре, n: величина променљиве |
Види још
[уреди | уреди извор]Референце
[уреди | уреди извор]- ^ Computer History, Eniac coding, US: ARL, Архивирано из оригинала 03. 01. 2010. г., Приступљено 21. 11. 2015
- ^ „8”, Computer History, Eniac coding, US: ARL, Архивирано из оригинала 31. 12. 2005. г., Приступљено 21. 11. 2015
- ^ Blaauw, Gerrit A. & Frederick P. Brooks (1997). Computer Architecture: Concepts and Evolution. Addison-Wesley. ISBN 978-0-201-10557-5.
- ^ Anthony Ralston & Edwin D. Reilly (1993). Encyclopedia of Computer Science Third Edition. Van Nostrand Reinhold. ISBN 978-0-442-27679-9.