![как создать кэши с одинаковой длиной битовой и словарной линии?](https://rvso.com/image/1304084/%D0%BA%D0%B0%D0%BA%20%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D1%82%D1%8C%20%D0%BA%D1%8D%D1%88%D0%B8%20%D1%81%20%D0%BE%D0%B4%D0%B8%D0%BD%D0%B0%D0%BA%D0%BE%D0%B2%D0%BE%D0%B9%20%D0%B4%D0%BB%D0%B8%D0%BD%D0%BE%D0%B9%20%D0%B1%D0%B8%D1%82%D0%BE%D0%B2%D0%BE%D0%B9%20%D0%B8%20%D1%81%D0%BB%D0%BE%D0%B2%D0%B0%D1%80%D0%BD%D0%BE%D0%B9%20%D0%BB%D0%B8%D0%BD%D0%B8%D0%B8%3F.png)
Мы знаем, что для минимизации задержки структур кэша в микропроцессорах длина провода битовой линии и длина провода словарной линии должны быть относительно одинаковыми. Другими словами, модули кэша в процессорах должны иметь квадратную форму, а не прямоугольную, чтобы минимизировать задержку. Однако мы знаем, что если мы хотим реализовать наивный модуль кэша, то, скорее всего, он в конечном итоге будет иметь прямоугольный кэш. Мой вопрос заключается в том, какие методы используются для создания кэшей квадратной формы в реальных проектах.
Пример: предположим, у нас есть кэш с прямым отображением 16 КБ с 64 КБ (512 бит) строки кэша. Таким образом, у нас будет 256 записей. Если предположить, что каждая битовая ячейка является квадратом, то длина мировой линии в два раза больше длины битовой линии. Как можно реструктурировать этот кэш так, чтобы битовая линия и строковая линия имели одинаковый размер?
решение1
Реальные проекты обычно не имеют квадратных ячеек. Они также могут делить кэш на блоки, так что внутри каждого блока строки имеют одинаковую длину. Если вы посмотрите на современный кристалл ЦП, вы увидите, что кэш довольно легко делится на блоки.