Що таке реєстр?

click fraud protection

Якщо ви не особливо зацікавлені в комп’ютерах, вам буде пробачено припущення, що єдиними формами пам’яті в комп’ютері є жорсткий диск і оперативна пам’ять. Ті з вас, хто цікавиться комп’ютерами, мабуть, знають, що це не так, і що ЦП також має набір кеш-пам’яті, який використовується для кешування даних з оперативної пам’яті, щоб ЦП міг отримати до них доступ. швидше. Усі ці функції є рекламованими, перш за все тому, що швидкість і/або ємність є гідною перевагою і загалом впливають на рівень продуктивності.

Насправді існує ще один рівень пам’яті. Як би ви не думали, що кеш L1 максимально наближений до фактичного процесорного ядра, в ієрархії пам’яті є ще один вищий рівень. Це регістри процесора. Причина, по якій їх насправді не рекламують і не згадують, полягає в тому, що вони взагалі не змінюються. Технічно вони можуть бути, однак кількість і розмір регістрів насправді є фундаментальними для архітектури. Це означає, що всі ЦП x86-64 мають однакову кількість регістрів. Вони не продаються, тому що вони не конкурують.

Що робить реєстр?

Регістр — це швидкодоступне місце зберігання для процесора. Доступ до реєстру є миттєвим із нульовою затримкою, тоді як навіть кеш L1 має затримку приблизно 4-5 циклів у сучасних ЦП. Цей миттєвий доступ натякає на варіант використання реєстрів. Регістри використовуються для зберігання інструкцій, які активно виконуються ЦП. Вони також зберігають точки даних, які потрібно обробити. Деякі регістри мають загальне призначення, тоді як інші мають дуже конкретне призначення. Прикладом регістра спеціального призначення може бути програмний лічильник, де процесор відстежує свою позицію в програмній послідовності.

Багато реєстрів вважаються доступними для користувача. Це не означає, що користувач комп’ютера може вибирати, яке значення в них вкладати. Це означає, що запущене програмне забезпечення може вказати дані для завантаження в ці регістри. Менша кількість реєстрів є внутрішніми, тобто програмне забезпечення взагалі не може звертатися до них. Регістр інструкцій, який зберігає інструкції, що виконуються в даний момент, є прикладом внутрішнього регістру.

Зареєструвати перейменування

Хоча архітектура центрального процесора може допускати лише одну конфігурацію регістрів, насправді в цьому є певний нюанс. Усі сучасні процесори використовують перейменування регістрів. Це техніка, за якої ви можете мати більше фізичних регістрів і використовувати їх для попереднього завантаження даних або зберігання даних, пов’язаних із інструкцією, що не відповідає порядку, яка інакше була б перезаписана. Коли ЦП доходить до того, що йому потрібні дані в додаткових регістрах, він просто перейменовує їх так, щоб вони стали адресними, одночасно з тим, щоб зробити адресаційний регістр неадресним.

Процес перейменування реєстру може бути дуже корисним для виконання поза чергою. Наприклад, якщо область пам’яті запрограмована на зчитування, а потім запис, і інструкції виконувалися в такому порядку, це нормально. Якщо, однак, інструкції змінено таким чином, щоб спочатку виконати запис, інструкція читання отримає неправильне значення. Щоб запобігти цьому, вихідне значення для читання зберігається у невикористаному регістрі, який потім перейменовується під час обробки відповідної інструкції.

Висновок

Регістри є найвищим рівнем в ієрархії пам'яті. Вони є єдиною частиною, яка безпосередньо адресується центральним процесором і не мають затримки. Регістри використовуються для зберігання даних, які активно виконуються ЦП. Вони також використовуються для зберігання інших точок даних, таких як лічильник програми, який відстежує, яка інструкція буде виконана наступною. Дуже обмежена кількість регістрів доступна в архітектурі x86-64, яка має 16 регістрів загального призначення та 16 або 32 регістри з плаваючою комою залежно від того, чи підтримується AVX-512.