Блок выборки команд
Выполнение любой команды ядром процессора начинается с выборки команды из подсистемы памяти (прежде всего из кэш-памяти команд L1К). РНК (регистр текущего номера команды) содержит виртуальный адрес текущего блока командной информации. Этот виртуальный адрес выдается в преобразователь виртуальных адресов в физические адреса (буфера TLB для кэш-памятей L1K, L1D)
Буфер TLB - это специальная кэш-память чисто ассоциативного типа. На вход этой кэш-памяти подается номер виртуальной страницы (старшие разряды виртуального адреса). Выполняется сравнение этого виртуального номера с содержимым каждой ячейки кэш-памяти. При удачном поиске из кэш-памяти извлекается номер физической страницы. К нему присоединяется смещение в странице (младшие разряды виртуального адреса), и физический адрес готов.
Буфер TLB может быть одноуровневым или двухуровневым. В современных ядрах процессоров емкость буфера TLB составляет десятки или даже сотни строк. Это означает, например, что будет быстрое преобразование виртуального адреса в физический адрес (ВА→ФА) для достаточно большого адресного пространства.
В случае неудачного поиска возникает прерывание. Обработка этого прерывания происходит в привелигированном режиме при отключенной кэш-памяти L1K. Время обработки этого прерывания очень большое. Время удачного преобразования виртуального адреса в физический адрес составляет (1 – 2) такта.
Физический адрес блока командной информации подается на вход кэш-памяти команд (L1K).
Кэш-память первого уровня во всех производительных ядрах разбита на два блока – кэш-память команд (L1K) и кэш-память данных (L1D) во избежание структурных конфликтов при одновременном обращении из разных стадий конвейера к первому уровню кэш-памяти.
При неудачном обращении к кэш-памяти команд L1K выполняется обращение к следующим уровням иерархии подсистемы памяти (кэш-памяти второго уровня L2, кэш-памяти третьего уровня L3, оперативной памяти).
Блок командной информации, как правило, это (16 – 32) байта, из кэш-памяти L1K заносится в буфер предварительной дешифрации.
После предварительной дешифрации блока команд (определены границы команд в блоке, их типы и другая необходимая информация) он направляется на входы основных дешифраторов команд.
Дата добавления: 2015-09-29; просмотров: 1287;