2014-09-26 2 views
3

Я понимаю, что:Иерархия памяти - Почему регистры стоят дорого?

Быстрее время доступа>Более дорогой

Медленнее время доступа>Менее дорогой

Я также понимаю, что регистры являются вершиной иерархии, и имеют самое быстрое время доступа. То, что мне трудно исследовать, - , почему это так дорого? Насколько мне известно, регистры буквально строятся непосредственно в ALU. Если они буквально встроены в CPU (особенно ALU), что на самом деле делает его самым дорогим?

Это размер (регистры являются самыми маленькими, конечно)?

+1

Думать адресации. Они близки к ALU, поэтому у нас минимальная ширина шины для выбора мультика регистра. Это напрямую связано с шириной команды, которая может выбирать только ограниченное количество регистров. Если у вас было 1024 регистра общего назначения, вам понадобится 10 бит в инструкции для выбора каждого регистра. –

+1

Также подумайте о часах. Чем больше у вас есть, тем больше оно, что обычно требует более медленной тактовой частоты. Вот почему ваша оперативная память работает с более низкой тактовой частотой, чем ваш процессор. –

+1

Предложение и спрос. Реестров очень мало, поэтому они очень дороги. Кэш L1 ограничен, но не как регистр. L2 более распространен. ОЗУ много. Диск в изобилии. S3 бесконечен. Более обильный, дешевый, но медленный доступ. –

ответ

5

Реестры очень, очень дорогие, потому что они должны быть очень и очень быстрыми, и к ним нужно одновременно обращаться из многих мест.

Например, если у вас есть утверждения a = a + x; b = b + x; c = c + x; у вас есть три инструкции, которые все хотят прочитать один и тот же регистр. Таким образом, регистр - это не просто память. Также есть все пути данных, которые должны быть в процессоре, поэтому одни и те же данные из регистра, содержащего x, могут быть отправлены одновременно на три команды. И данные могут идти во многие, многие места. Если вы пишете double a = x; и x - целое число, тогда должен быть путь данных, который отправляет регистр x в блок с плавающей точкой. Или к векторной единице. И так далее.

У вас возникла проблема не только с тем, что вам нужно хранить данные, но и вы должны убедиться, что они доступны. Если вы пишете x = y + z; a = a + x; кто-то должен отслеживать, когда первая команда запускает, что регистр, удерживающий x, недействителен прямо сейчас, пока не будет сохранен результат добавления, и прекратите выполнение второго добавления. Это супер дорого.

Таким образом, существует гораздо больше возможностей для создания регистра, чем просто добавление немного памяти, и для этого необходимо заплатить. И регистры настолько важны для скорости процессора, что для их построения используются самые дорогие и самые быстрые технологии.