Главная    Почта    Новости    Каталог    Одноклассники    Погода    Работа    Игры     Рефераты     Карты
  
по Казнету new!
по каталогу
в рефератах

Подсистема памяти современных компьютеров

ер   кэш-памяти    зафиксировать,    то    увеличение    степени
ассоциативности приводит к увеличению количества  блоков  в  множестве,  при
этом уменьшается размер индекса и увеличивается размер тега.


                   Замещение блока кэш-памяти при промахе


    При  возникновении  промаха,  контроллер  кэш-памяти   должен   выбрать
подлежащий замещению блок. Польза  от  использования  организации  с  прямым
отображением заключается  в  том,  что  аппаратные  решения  здесь  наиболее
простые. Выбирать просто нечего: на попадание проверяется только  один  блок
и только этот блок может  быть  замещен.  При  полностью  ассоциативной  или
множественно-ассоциативной организации кэш-памяти имеются несколько  блоков,
из которых  надо  выбрать  кандидата  в  случае  промаха.  Как  правило  для
замещения блоков применяются две основных стратегии: случайная и LRU.
    В первом случае, чтобы иметь равномерное распределение, блоки-кандидаты
выбираются случайно. В некоторых системах,  чтобы  получить  воспроизводимое
поведение, которое особенно полезно во время отладки аппаратуры,  используют
псевдослучайный алгоритм замещения.
    Во втором случае, чтобы уменьшить вероятность выбрасывания  информации,
которая скоро может  потребоваться,  все  обращения  к  блокам  фиксируются.
Заменяется тот блок, который не использовался  дольше  всех  (LRU  -  Least-
Recently Used).
    Достоинство  случайного  способа  заключается  в  том,  что  его  проще
реализовать в аппаратуре. Когда количество  блоков  для  поддержания  трассы
увеличивается, алгоритм LRU становится все  более  дорогим  и  часто  только
приближенным.

     Различия в долях промахов при использовании алгоритма замещения LRU

        и случайного алгоритма (при нескольких размерах кэша и разных
                ассоциативностях при размере блока 16 байт):

|Ассоциативность: |2-канальная      |4-канальная      |8-канальная      |
|Размер кэш-памяти|LRU, Random      |LRU, Random      |LRU, Random      |
|16 KB            |5.18%, 5.69%     |4.67%, 5.29%     |4.39%, 4.96%     |
|64 KB            |1.88%, 2.01%     |1.54%, 1.66%     |1.39%, 1.53%     |
|256 KB           |1.15%, 1.17%     |1.13%, 1.13%     |1.12%, 1.12%     |



                       Что происходит во время записи


    При  обращениях  к  кэш-памяти  на  реальных   программах   преобладают
обращения по чтению. Все обращения  за  командами  являются  обращениями  по
чтению и большинство команд  не  пишут  в  память.  Обычно  операции  записи
составляют менее 10% общего трафика памяти.  Желание  сделать  общий  случай
более  быстрым  означает  оптимизацию  кэш-памяти  для  выполнения  операций
чтения,  однако  при  реализации  высокопроизводительной  обработки   данных
нельзя пренебрегать и скоростью операций записи.
    К счастью, общий случай является и более простым.  Блок  из  кэш-памяти
может быть прочитан в то же самое время, когда читается и  сравнивается  его
тег. Таким образом, чтение блока  начинается  сразу  как  только  становится
доступным  адрес  блока.  Если  чтение  происходит  с  попаданием,  то  блок
немедленно направляется в  процессор.  Если  же  происходит  промах,  то  от
заранее считанного блока нет никакой пользы, правда нет и никакого вреда.
    Однако  при  выполнении  операции  записи  ситуация  коренным   образом
меняется. Именно процессор определяет  размер  записи  (обычно  от  1  до  8
байтов) и только эта часть блока может быть изменена.  В  общем  случае  это
подразумевает выполнение  над  блоком  последовательности  операций  чтение-
модификация-запись: чтение оригинала блока, модификацию его части  и  запись
нового значения блока. Более того, модификация блока не может начинаться  до
тех пор,  пока  проверяется  тег,  чтобы  убедиться  в  том,  что  обращение
является  попаданием.  Поскольку  проверка  тегов   не   может   выполняться
параллельно с другой работой, то операции записи  отнимают  больше  времени,
чем операции чтения.
    Очень часто организация кэш-памяти в разных машинах  отличается  именно
стратегией выполнения записи. Когда выполняется запись в кэш-память  имеются
две базовые возможности:
    сквозная  запись  (write   through,   store   through)   -   информация
записывается в два места: в блок кэш-памяти и в блок  более  низкого  уровня
памяти.
    запись с обратным копированием (write back,  copy  back,  store  in)  -
информация записывается только в блок кэш-памяти. Модифицированный блок кэш-
памяти записывается в  основную  память  только  когда  он  замещается.  Для
сокращения частоты копирования блоков при замещении обычно с  каждым  блоком
кэш-памяти связывается так называемый бит модификации (dirty bit). Этот  бит
состояния показывает был ли модифицирован блок,  находящийся  в  кэш-памяти.
Если он не модифицировался, то обратное  копирование  отменяется,  поскольку
более низкий уровень содержит ту же самую информацию, что и кэш-память.
    Оба подхода к организации записи имеют свои преимущества и  недостатки.
При записи с обратным копированием операции записи выполняются со  скоростью
кэш-памяти, и несколько записей в один и тот же блок  требуют  только  одной
записи в память более низкого уровня. Поскольку в этом  случае  обращения  к
основной памяти происходят реже,  вообще  говоря  требуется  меньшая  полоса
пропускания памяти, что очень привлекательно для мультипроцессорных  систем.
При сквозной записи промахи по чтению не влияют на записи  в  более  высокий
уровень, и, кроме того, сквозная запись проще для реализации, чем  запись  с
обратным копированием. Сквозная запись имеет также преимущество в  том,  что
основная  память  имеет  наиболее  свежую  копию   данных.   Это   важно   в
мультипроцессорных системах, а также для организации ввода/вывода.
    Когда процессор  ожидает  завершения  записи  при  выполнении  сквозной
записи, то говорят, что он  приостанавливается  для  записи  (write  stall).
Общий прием минимизации остановов по записи связан с  использованием  буфера
записи (write buffer), который позволяет  процессору  продолжить  выполнение
команд  во  время  обновления  содержимого  памяти.  Следует  отметить,  что
остановы по записи могут возникать и при наличии буфера записи.
    При промахе во время записи имеются две дополнительные возможности:
    разместить запись  в  кэш-памяти  (write  allocate)  (называется  также
выборкой при записи (fetch on write)). Блок загружается в кэш-память,  вслед
за чем выполняются действия аналогичные выполняющимся при выполнении  записи
с попаданием. Это похоже на промах при чтении.
    не размещать запись в кэш-памяти (называется также записью в  окружение
(write  around)).  Блок  модифицируется  на  более  низком   уровне   и   не
загружается в кэш-память.
    Обычно  в  кэш-памяти,  реализующей  запись  с  обратным  копированием,
используется размещение записи в  кэш-памяти  (в  надежде,  что  последующая
запись в этот блок будет перехвачена), а в кэш-памяти  со  сквозной  записью
размещение записи в кэш-памяти часто не используется (поскольку  последующая
запись в этот блок все равно пойдет в память).

    Вполне  понятно,  что  производительность  компьютера   непосредственно
зависит от производительности процессора  и  производительности  оперативной
памяти. Теоретическая  производительность  (пропускная  способность)  памяти
пропорциональна   разрядности   и   тактовой   частоте   шины   и    обратно
пропорциональна суммарной длительности пакетного цикла. Для  повышения  этой
производительности увеличивают разрядность  шины  (так,  начиная  с  P5  32-
разрядные процессоры имеют 64-разрядную системную  шину),  тактовую  частоту
(с 66 МГц наконец-то поднялись до 100 с прицелом  на  133  МГц).  При  этом,
естественно, стремятся и к уменьшению числа тактов в пакетном  цикле.  Кроме
того, шина P6 позволяет процессору выставить до  16  запросов  конкурирующих
транзакций, так что  у  подсистемы  памяти  есть  теоретическая  возможность
“многостаночной” работы.


                             Динамическая память


    Теперь посмотрим на оперативную память изнутри. На протяжении уже  трех
десятилетий  в   качестве   основной   памяти   используют   массивы   ячеек
динамической памяти. Каждая ячейка содержит всего лишь один  КМОП-транзистор
(комплементарные полевые траезисторы), благодаря  чему  достигается  высокая
плотность упаковки ячеек при  низкой  цене.  Запоминающим  элементом  у  них
является  конденсатор  (емкость  затвора),  и  ячейка  может  помнить   свое
состояние недолго — всего  десятки  миллисекунд.  Для  длительного  хранения
требуется регенерация — регулярное “освежение” (refresh) памяти, за что  эта
память и получила название  “динамическая”  —  DRAM  (Dynamic  RAM).  Ячейки
организуются в  двумерные  матрицы,  и  для  обращения  к  ячейке  требуется
последовательно подать два выбирающих сигнала —  RAS#  (Row  Access  Strobe,
строб строки) и  CAS#  (Column  Access  Strobe,  строб  столбца).  Временная
диаграмма  циклов  чтения  традиционной  динамической  памяти  приведена  на
рисунке  (циклы  записи  для  простоты  здесь   рассматривать   не   будем).
Микросхемы динамической памяти традиционно имеют  мультиплексированную  шину
адреса (MA). Во время действия RAS# на ней  должен  быть  адрес  строки,  во
время действия CAS# —  адрес  столбца.  Информация  на  выходе  шины  данных
относительно начала цикла (сигнала  RAS#)  появится  не  раньше,  чем  через
интервал TRAC, который называется временем доступа. Есть  также  минимальная
задержка данных относительно импульса CAS# (TCAC), и минимально  необходимые
интервалы пассивности сигналов RAS# и CAS#  (времена  предзаряда).  Все  эти
параметры и определяют предел производительности памяти.  Ключевой  параметр
микросхем — время доступа  —  за  всю  историю  удалось  улучшить  всего  на
порядок  &mda
12345След.
скачать работу

Подсистема памяти современных компьютеров

 

Отправка СМС бесплатно

На правах рекламы


ZERO.kz
 
Модератор сайта RESURS.KZ