Небезызвестный автор пишет что "количество банков кэша и называют его ассоциативностью", однако другой небезызвестный, рассказывая о Core 2, говорит что "The level-1 data cache is 32 kB, dual port, 8 way, 64 byte line size. ...... Each 64-bytes line in the data cache is divided into 4 banks of 16 bytes each." Подозреваю что оба говорят правду, но о "разных" вещях, т.к. Core 2 ещё не было когда писал первый. Как на самом деле-то?
Крис? =) Мне кажется что "banks" отсюда != банкам из первого источника. Почитай внимательнее что имеется ввиду в первом случае.
nester7 Конечно о разных и Core 2 тут ни причем, т.к. деление на "физические" банки существует во всех RAM - и в кэшах и в ОЗУ. Делается это для сокращения времени между последовательными запросами на чтение или запись при фиксированной латентности обработки запроса - пока один банк обслуживает запрос на чтение, в другой может параллельно производиться запись, а в динамических ОЗУ еще и перезаряд давно неиспользуемых банков. Отсюда и понятие dual ported - все процы могут одновренменно выполнять чтение и запись в кэш, но при условии что они направлены в разные банки. Что касается ассоциативности, то тут официального понятия банков как таковых нет и это скорее авторские финты ушами для наглядной демонстрации смысла N-way set associative cache По крайней мере если и приравнивать понятия логического way некому логическому или физическому bank, то это будет совсем другой bank, не имеющий отношения к dual port
подозреваю что здесь "Each 64-bytes line in the data cache is divided into 4 banks of 16 bytes each" речь идет о секторах. Одна строка делится на секторы, каждый сектор имеет свои биты состояния. Зачем? Чтобы не загружать каждый раз 64 байта при промахе, а только 16, потому что состояние относится ко всей строке если она не разбита на секторы. P.S. Тег у всех секторов одинаковый. Только состояние у каждого свое.
Dark_Master Да, не-е Загрузка\выгрузка (вроде как) всегда идет полными линейками. А деление на банки делается для возможности распараллеливания чтения и записи - об этом и у Фога сказано, просто nester7 неполную цитату привел - см. microarhitecture.pdf, 7.13 Cache and memory access (Core 2) и 9.14 Cache (AMD). И у Касперски отдельный раздел (Data distribution over cache banks) этому посвящен, вот только действительно термин bank у него используется в нескольких разных смыслах - вот бегинеры и путаются Деление на физ.банки кстати есть во всех процах, только Intel почему то в своих мануалах этот факт замалчивает