Почему нет такой шины данных, которая имеет такой же размер, как размер строки кэша?

Когда происходит промахи в кеше, CPU извлекает целую строку кэша из основной памяти в иерархию кэша. (обычно 64 байта на x86_64)

Это делается через шину данных, которая имеет только 8 байтов в современных 64-битных системах. (так как размер слова составляет 8 байт)

EDIT: "Шина данных" означает шину между матрицей CPU и модулями DRAM в этом контексте. Ширина этой шины данных не обязательно соответствует размеру слова.

В зависимости от стратегии сначала запрашивается запрашиваемый адрес, а затем остальная часть строки кэша выбирается последовательно.

Казалось бы, гораздо быстрее, если бы была шина шириной 64 байта, что позволило бы сразу получить целую строку кэша. (это будет в восемь раз больше размера слова)

Возможно, могут быть две разные ширины шины данных: одна для стандартной выборки кеш-линии и одна для внешнего оборудования (DMA), которая работает только с доступом к памяти формата слова.

Каковы ограничения, ограничивающие размер шины данных?

Ответ 1

Я думаю, что ширина шины DRAM расширена до текущих 64 бит до AMD64. Это совпадение, что оно соответствует размеру слова. Совсем не случайно, что он позволяет передавать адрес за одну передачу.

См. ниже: High Bandwidth Memory использует более широкие шины, потому что существует ограничение на то, насколько высоко вы можете синхронизировать вещи, и в какой-то момент становится выгодным просто сделать его массово параллельным.

Казалось бы, гораздо быстрее, если бы существовала шина шириной 64 байта, что позволило бы сразу извлечь целую строку кэша.

Размер пакетной передачи не должен коррелировать с шириной шины. Передачи в/из DRAM происходят в пакетах с размерами в кэш-линии. ЦПУ не должен отправлять отдельную команду для каждого 64-битного кода, просто для установки пакетной передачи всей строки кэша (чтение или запись). Если он хочет меньше, ему действительно нужно отправить команду abort-burst; нет команды передачи "один байт" или "одно слово". (И да, что wiki-статья SDRAM по-прежнему применяется к DDR3/DDR4.)

Вы считали, что для сокращения накладных расходов необходимы более широкие шины? Это не так.


Высокоскоростные параллельные шины сложно проектировать. Все следы на материнской плате между гнездом CPU и каждым гнездом DRAM должны иметь одинаковую задержку распространения в течение менее 1 такта. Это означает, что они имеют почти ту же длину и управляют индуктивностью и емкостью для других трасс, потому что эффекты линии передачи являются критическими на частотах, достаточно высоких, чтобы быть полезными.

Чрезвычайно широкая шина остановит вас от синхронизации с ней как высокого, потому что вы не можете достичь тех же допусков. SATA и PCIe заменили параллельные шины (IDE и PCI) на высокоскоростные последовательные шины. (PCIe использует несколько дорожек параллельно, но каждая полоса является собственной независимой ссылкой, а не только частью параллельной шины).

Просто было бы нецелесообразно использовать 512 строк данных из гнезда CPU для каждого канала сокетов DRAM. Типичные процессоры для настольных компьютеров и ноутбуков используют двухканальные контроллеры памяти (поэтому два модуля DIMM могут делать разные вещи одновременно), поэтому это будет 1024 трассировки на материнской плате и контакты на разъеме процессора. (Это выше фиксированного количества строк управления, таких как RAS, CAS и т.д.)

Запуск внешней шины при действительно высоких тактовых частотах становится проблематичным, поэтому существует компромисс между шириной и тактовой частотой.


Подробнее о DRAM см. Ульрих Дреппер Что должен знать каждый программист о памяти. Он получает удивительно техническую информацию об аппаратном дизайне модулей DRAM, адресных линий и мультиплексоров/демультиплексоров.

Обратите внимание, что RDRAM (RAMBUS) использовала высокоскоростную 16-битную шину и имела более высокую пропускную способность, чем SDRAM PC-133 (1600 МБ/с против 1066 МБ/с). (У этого была более низкая латентность, и он был более горячим, и на рынке не было технических технических и некоторых нетехнических причин).


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

Ульрих Дреппер (ссылка выше) подтверждает это:

На основе адресных строк a2и a3 содержимое одного столбца затем становится доступным для вывода данных DRAM чип. Это происходит много раз параллельно по числу чипов DRAM , чтобы получить общее количество бит, соответствующее к ширине шины данных.


Внутри процессора шины намного шире. Core2 для IvyBridge использовали 128-битные пути данных между различными уровнями кеша и от блоков выполнения до L1. Haswell расширил это до 256b (32B), с 64B-каналом между L1 и L2


Высокая пропускная способность предназначена для более жесткой связи с тем, что контролирует ее, и использует 128 для каждого канала с 8 каналами. (для общей пропускной способности 128 ГБ/с). HBM2 идет в два раза быстрее, с той же шириной.

Вместо одной шины 1024b 8 каналов 128b являются компромиссом между наличием одной чрезвычайно широкой шины, которая трудно поддерживать в синхронизации, а также слишком большой накладной из-за того, что каждый бит на отдельном канале (например, PCIe). Каждый бит на отдельном канале хорош, если вам нужны надежные сигналы и разъемы, но когда вы можете лучше управлять вещами (например, когда память не сокетна), вы можете использовать широкие быстрые шины.


Возможно, могут быть две разные ширины шины данных: одна для стандартной выборки кеш-линии и одна для внешнего оборудования (DMA), которая работает только с доступом к памяти формата слова.

Это уже так. Контроллеры DRAM интегрированы в CPU, поэтому связь с системными устройствами, такими как контроллеры SATA и сетевые карты, должна переходить от них к процессору через одну шину (PCIe), а затем в оперативную память (DDR3/DDR4). Мост от архитектуры внутренней памяти процессора до остальной части системы называется системным агентом. Чипсет Northbridge связывается с ним по некоторым каналам PCIe, которые он предоставляет.

Skylake system agent diagram, from IDF via ARStechnica

В многопроцессорной системе также должен происходить доступ к кеш-когерентности и доступ к нелокальной памяти между сокетами. AMD по-прежнему может использовать гипертранспорт (64-битная шина). Аппаратное обеспечение Intel имеет дополнительную остановку на кольцевой шине, которая соединяет ядра внутри Xeon, и это дополнительное соединение, где данные для других сокетов поступают или выходят. IDK - ширина физической шины.

Ответ 2

Я думаю, что есть физическая/проблемная проблема. в дополнение к линиям данных (64) имеют адресные строки (15+) и bank_select линии (3). Плюс другие строки (CS, CAS, RAS...). Например, см. 6-го поколения Intel® Core ™. Технический паспорт семейства процессоров. В общем, около 90 линий для одной шины и 180 для двоих. Существуют и другие линии (PCIe, Dysplay...). Следующий аспект - всплеск. С помощью bank_select мы можем выбрать один из 8 банков. В пакетном режиме с одной записью адреса во всех банках мы считываем данные из всех банков по каждому тику.