Який розмір слова оперативної пам’яті в 32/64 бітовій машині (процесор)


4

Який розмір слова оперативної пам’яті в 32/64 бітовій машині (процесорі)?

Це питання мене зводить з розуму. Який саме розмір слова зберігає дані в оперативній пам'яті в 64-бітових машинах, таких як мікропроцесори Intel Core i5?

Також чи змінюється розмір слова, що містить дані, від 32-бітного до 64-бітного?

Відповіді:


3

Я не знайомий з найрізноманітнішими деталями того, як оперативна пам’ять працює з процесором Intel в ці дні, даючи новіші речі, такі як кеш-пам'ять кеш-пам'яті та NUMA, але, з точки зору оперативної пам'яті, я вважаю, що це все-таки 8-бітні байти, хоча оперативна пам’ять зараз зазвичай розташована в канали, де можна отримати доступ до декількох слотів одночасно. Таким чином, захоплення 4-х байтів (якщо припустити 4 слота) одночасно займе стільки ж часу, скільки і захоплення 1 байта в такій системі. Тим не менш, оперативна пам'ять приймає адресу від контролера пам'яті як вхідну і повертає їй 8 біт як вихід AFAIK.

Розмір слова може означати різні речі. Я пам’ятаю, що вперше зіткнувся з цим терміном, вивчаючи 68000 мов збирання - у тексті, який я читав, «байт» означав 8 біт, а «слово» означало 16 біт, а «вирівнювання за словом» означало адресу, що падає на 16-бітну межу. Я знаю, що термін "слово" використовувався раніше до введення 68000 (1980?) І, можливо, був синонімом "байт" у більш ранні часи, ніж це.

"Народні" дані, які процесор "вважає за краще" мати справу з "біттю" своєї архітектури та режимом, в якому вона працює. 32-бітний процесор (або 64-бітний процесор не в "довгому режимі") має 32 -бітові регістри, купа інструкцій для завантаження значень з ОЗУ (4 байти) в ці регістри та інші стуфи. Але в Intel 32-розрядний реєстр, такий як EAX, також може розглядатися як два регістри AH (верхні 16 біт EAX) та AL (нижній 16 біт), і існує безліч інструкцій MOV, які завантажують матеріали з оперативної пам'яті в EAX, AH, AL, а звідти назад до ОЗУ. Мені дуже лінь переглядати посібник програміста Intel зараз, але я думаю, що є вказівки щодо завантаження одиничних байтів у верхній або нижній 8 біт AH або AL. (Я знаю, що у MIPS є такі вказівки). Але я думаю, що там '

Отже, в Intel та більшості інших процесорів загального призначення, виготовлених з 16-бітної епохи, ви дійсно гнучкі в тому, як ви звертаєтесь до пам'яті. Інструкції, швидше за все, більш оптимізовані для роботи у "біті" архітектури.


3

Традиційно "слово" в архітектурі комп'ютерів було, як правило, найменшою адресною одиницею пам'яті. І традиційно це було те саме, що розмір регістру загального призначення машини.

Однак з тих пір, як байт-адресація стала популярною, концепція стала розбавленою. (Для цього ми, мабуть, можемо зарахувати IBM System / 360 та PDP-11.)

Що стосується адреси пам'яті, визначеної архітектурою процесора - тобто програмісти бачать машину - поняття "слово" не існує на x86 / x64, якщо ви не вважаєте це синонімом байтів. Кожен байт пам'яті має власну адресу, а адреса байта - це також адреса будь-якої більшої області, яка починається з цього байта (поширюється на адреси з більшими числами). Звичайно, ми можемо переміщувати один, два, чотири або (на x64) вісім байтів одночасно між регістром та оперативною пам’яттю - або набагато більше, пам’яті до пам’яті, з інструкціями REP - але адреса, яку ми стверджуємо, все ще має адресу байт. Ми можемо робити арифметику на словах усіх цих розмірів. (Та інші.)

Якщо ви думаєте, що стосується регістрів, то «розмір слова» машини зазвичай вважається таким самим, як і регістри загального призначення. Це буде 32 біти на x86, 64 біт на x64. У більшості архітектур розмір GPR - це розмір найбільшого цілого числа, на якому ЦП може виконувати просту арифметику за допомогою однієї інструкції.

Тепер введемо ще більше плутанини ...!

Що стосується платформи (материнська плата, модулі оперативної пам’яті та мікросхеми тощо), на всіх машинах, що використовують «товарний» процесор та набори мікросхем Intel та AMD, оперативна пам’ять розміщена в 64-бітових фрагментах - я думаю, ви могли б назвати їх словами. Це можна було дуже чітко побачити на попередніх процесорах, які мали окремі штифти для адреси та даних: Найменш значимий адресний контакт називається A3, а не A0! Фізичні біти адреси A0, A1 і A2 ніколи не залишають процесор. Але програмісти ніколи не бачать таких адрес.

І нарешті, є поняття "кеш-лінія". Рядок кешу - це фізично суміжний фрагмент оперативної пам’яті, який займає один запис у кеші L1 / L2 / L3. Лінії кешу в світі Intel / AMD вже давно є 64 байтами. Отже, коли ви отримуєте доступ до адреси пам'яті, яка наразі не знаходиться у вашому кеші, процесор отримує вісім з цих 8-байтових фрагментів оперативної пам’яті. Інакше кажучи, адреси, які зберігаються в кеші, опускають шість біт низького порядку. То, може, слово в кешіце дійсно 64 байти або 512 біт! (Але доступ до пам'яті, який обходить кеш-пам'ять, все одно може читати або записувати лише 8 байт одночасно; у діапазонах фізичних адрес, які декодуються пристроями вводу / виводу, нанесені на пам'ять, окремі байти можуть бути адресовані; це залежить від шини. Звичайно, ми не можемо робити арифметичні для 512-бітних цілих чисел.)

У середовищі програмування Microsoft C "слово" становить 16 біт - це було дуже давно, перш ніж Microsoft, а ім'я та визначення типу даних перенесли в 32- і 64-бітні середовища для сумісності. "Подвійне слово" (або DWORD або LONG, для "longword", термін якого було поширеним у VAX), становить 32 біти. 64-бітні цілі числа в архітектурі називаються "чотирьох словами", але зазвичай мають більш конкретні імена на C, як UINT64 (64-бітове ціле число, не підписане).

Отже, це залежить від того, де ти перебуваєш у системі та від того, що ти дивишся. Ми зазвичай не думаємо про "розмір слова" у всі ці дні, а про "розмір GPR".


1
"Майстерні програми програмування Microsoft C" отримали це 16-бітове слово від офіційних назв даних Intel, тому, хоча це правда, це не виключно ні для інструментальних мереж Microsoft, ні для мови С. І так, "чотирислов'я" використовуються офіційно. Розділ 4-1 тома 1 Intel SDM починається "Основними типами даних є байти, слова, подвійні слова, чотири слова та подвійні чотирислівні слова"
Бен

Ага. Дякую! ("Квадворд" також був офіційним у DEC, і "longword" або просто "long" на 4 байти)
Джеймі Ханрахан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.