Кэш – память и принципы ее организации, страница 3

00001000        00111000        01101000        10011000        11001000            11111000

00001001        00111001        01101001        10011001        11001001            11111001

00001010        00111010        01101010        10011010        11001010            11111010

00001011        00111011        01101011        10011011        11001011            11111011

00001100        00111100        01101100        10011100        11001100            11111100

00001101        00111101        01101101        10011101        11001101            11111101

00001110        00111110        01101110        10011110        11001110            11111110       

00001111        00111111        01101111        10011111        11001111            11111111

00010000        01000000        01110000        10100000        11010000      100000000

00010001        01000001        01110001        10100001        11010001      100000001

00010010        01000010        01110010        10100010        11010010      100000010     

00010011        01000011        01110011        10100011        11010011      100000011

00010100        01000100        01110100        10100100        11010100      100000100

00010101        01000101        01110101        10100101        11010101      100000101

00010110        01000110        01110110        10100110        11010110      100000110

00010111        01000111        01110111        10100111        11010111      100000111

00011000        01001000        01111000        10101000        11011000      100001000

00011001        01001001        01111001        10101001        11011001      100001001

00011010        01001010        01111010        10101010        11011010      100001010

00011011        01001011        01111011        10101011        11011011      100001011

00011100        01001100        01111100        10101100        11011100      100001100

00011101        01001101        01111101        10101101        11011101      100001101

00011110        01001110        01111110        10101110        11011110      100001110

00011111        01001111        01111111        10101111        11011111      100001111

00100000        01010000        10000000        10110000        11100000      100010000

00100001        01010001        10000001        10110001        11100001      100010001

00100010        01010010        10000010        10110010        11100010      100010010

00100011        01010011        10000011        10110011        11100011      100010011

00100100        01010100        10000100        10110100        11100100      100010100

00100101        01010101        10000101        10110101        11100101      100010101

00100110        01010110        10000110        10110110        11100110      100010110

00100111        01010111        10000111        10110111        11100111      100010111

00101000        01011000        10001000        10111000        11101000      100011000

00101001        01011001        10001001        10111001        11101001      100011001

00101010        01011010        10001010        10111010        11101010      100011010

00101011        01011011        10001011        10111011        11101011      100011011

00101100        01011100        10001100        10111100        11101100      100011100

00101101        01011101        10001101        10111101        11101101      100011101

00101110        01011110        10001110        10111110        11101110      100011110

00101111        01011111        10001111        10111111        11101111      100011111

Смещение – определяет номер (адрес) требуемого элемента в строке (байта, слова, двойного слова и т.д.) В нашем примере один блок может содержать до 16 байт, до 8 слов или 4 двойных слова.

Биты достоверности  V (Valid) (один бит на одну строку кэш-памяти) – определяют, занесен ли в данную строку достоверный блок информации или нет. Если в бите достоверности строки записана 1, это означает, что в текущий

момент времени данная строка достоверно отображает соответствующий блок основной памяти. При начальной инициализации системы все эти биты устанавливаются равными 0.

Биты модифицируемости M (Modified) (один бит на строку кэш-памяти) – определяют, изменялось ли содержимое данной достоверной строки в процессе обмена информации с процессором или нет. Если осуществлялось только считывание из нее, то строка не изменялась и остается «чистой» (clean). Если изменялось, т.е. в нее осуществлялась запись, то строка становится «грязной» (dirty) и ее содержимое подлежит перезаписи в оперативную память.

При обращении CPU к оперативной памяти поле индексов определяет выбор одной из строк (cacheline) кэш-памяти. Признак, хранящийся в соответствующей строке памяти признаков (тэгов), сравнивается с 19 старшими разрядами физического адреса, выданного CPU. Если выбранная из памяти признаков информация (код признака) совпадает  со значениями этих разрядов и бит достоверности равен 1, то это означает, что необходимые данные находятся в кэш-памяти (cachehit) – они считываются и передаются в CPU. Если же нет, то это свидетельствует об отсутствии запрашиваемой информации в кэш-памяти (cachemiss). В этом случае затребованная информация извлекается непосредственно из оперативной памяти и, одновременно, соответствующий блок информации из оперативной памяти записывается в выбранную строку кэш-памяти.