регістровий файл

Матеріал з Вікіпедії - вільної енциклопедії

Система команд мікропроцесора (архітектура) практично завжди визначає набір регістрів, які будуть зберігати дані для обробки функціональними пристроями чіпа. У найпростіших процесорах такі архітектурні регістри відображаються один-в-один в фізичний регістровий файл. У більш складних ЦПУ використовується перейменування регістрів (register renaming), яке дозволяє динамічно змінювати відповідність між апаратними та архітектурними регістрами під час виконання.

Реалізація

Традиційно регістровий файл реалізується як масив запам'ятовуючих осередків, зчитування вертикально. Слова розташовані в горизонтальних рядках (word lines), і при читанні осередку видають своє значення на вертикальні бітові лінії (Bit lines). У нижній частині ці лінії підключені до підсилювачів, які перетворять сигнали з осередків, ослаблені при передачі, в булеві сигнали повної амплітуди. У лівій частині розташовані декодери, що активують рядок, відповідну замовленому регістру або регістрів. Великі реєстрові файли іноді організовуються як мозаїка з декількох відображених і повернених простіших реєстрових файлів.

Реєстрові файли містять по одному рядку слів на кожен порт, по одній бітової лінії на біт слова для кожного порту читання і по дві бітові лінії на біт слова для кожного порту записи. Також кожна клітинка повинна мати входи харчування Vdd і землі Vss. Отже, зі збільшенням кількості портів площа, необхідна під розведення, зростає квадратично, а площа, яку займає транзисторами, - лінійно. В якийсь момент, можливо, буде більш оптимально за площею або по затримках мати кілька реєстрових файлів з дублюється інформацією і половиною портів читання в кожному, ніж один великий регістровий файл відразу з усіма портами читання.

Наприклад, реєстровий файл в целочисленном АЛУ мікропроцесора MIPS R8000. має 9 портів читання, 4 порту записи, що містить 32 64-бітових регістра і реалізований на техпроцессе 0,7 мкм, має такі розміри, що добре помітний неозброєним оком навіть на відстані близько 30 см.

  • Декодер зазвичай розділений на предекодер і decoder proper.
  • Декодер є послідовністю елементів І (AND-gate), які виставляють лінії слів.
  • Для кожного порту читання або запису потрібно один декодер. Наприклад, якщо файл має 4 порти читання і 2 порту, в ньому буде 6 ліній слів в кожному осередку пам'яті в масиві і 6 елементів І (AND-gate) на кожен ряд в декодере.

Типовий регістровий файл з 3 портами, в якому можливе одночасне читання з 2 регістрів і запис в 1 регістр, складається з осередків, схожих на зображену.

Базова схема бітової комірки:

  • Стан зберігається в парі інверторів.
  • Читання відбувається через транзистор NMOS на бітову лінію (транзистор відкривається лінією слів даного порту)
  • Дані записуються замиканням однієї чи іншої сторони на землю через два NMOS-транзистора.

Отже, кожен порт читання вимагає один додатковий транзистор на кожну клітинку, порт записи вимагає 4 транзистора.

мікроархітектура

У багатьох реалізаціях реєстрових файлів немає спеціального захисту від спроб записи в одну і ту ж комірку відразу з декількох портів записи. Замість цього апаратура планування інструкцій повинна гарантувати, що на кожному такті не більше однієї інструкції буде проводити запис в будь-який осередок. Якщо ж заплановано кілька інструкцій, які пишуть в одну клітинку, то тільки одна з них повинна мати включеної лінію «write enable» (дозвіл запису).

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

Напишіть відгук про статтю "Регістровий файл"

Примітки

Схожі статті