По поводу статьи от 12.01.2004 - насчет interleave

Обсуждение материалов сайта "МИР NVIDIA".
Ответить
Batman
Участник
Сообщения: 402
Зарегистрирован: 01.01.1970 3:00
Откуда: Россия, Байконур
Контактная информация:

По поводу статьи от 12.01.2004 - насчет interleave

Сообщение Batman » 14.01.2004 0:35

Цитата из статьи:
>> Что же такое интерливинг? Представьте себе простую компьютерную программу, которая читает данные с одной страницы памяти, выполняет
>> простое вычисление и записывает результат на другую страницу памяти. Без чередования, набор чипов должен активизировать один банк и одну
>> страницу и прочитать из них данные, затем активизировать другой банк и другую страницу и записать уже там данные из первого банка памяти,
>> затем активизировать первый банк и так далее. С чередованием, т.е. интерливингом, как банки, так и страницы остаются активными, что
>> естественно улучшает быстродействие подсистемы памяти и косвенно других подсистем, в т.ч. и видеоподсистемы.
А теперь цитата из учебника по архитектуре ЭВМ (автор Каган):
>> Расслоение памяти (в западной литературе memory interleave) есть один из видов распределения адресов по банкам памяти. В простейшем случае
>> системы с двумя банками памяти возможно рапределение адресов следующим образом: четные адреса находятся в банке 0, нечетные в банке 1.
>> При обращении к последовательным ячейкам ОП длительность ожидания готовности памяти сокращается в два раза.
От себя добавлю, что такое расслоение называется 2x interleave (или 2 bank) в терминах AMI BIOS. Это расслоение используется аж с IBM PC XT (процессор i8086). Четырехкратное расслоение может использоваться лишь с четырьмя или более банками памяти. Работает так: адрес 0000 - банк 0, 0001 - банк 1, 0002 - банк 2, 0003 - банк 3, 0004 - банк 0 и т.п. Открытость же банков, упомянутая в статье не более, чем другой механизм, ПОЗВОЛЯЮЩИЙ включать расслоение - это особенность КОНТРОЛЛЕРА ПАМЯТИ (точнее адесного дещифратора - но это уже тонкости). И постоянная активность банков абсолютно не означает наличие расслоения памяти, хотя расслоение памяти предполагает постоянную активность банков (а вообще - каждый отдельный банк активен как обычно - циклом, просто при этом в любой момент времени активен как минимум один банк).
Основной же прирост скорости (в чем собственно вся соль-то) - не из-за открытости банков (даже у древнего контроллера памяти, стоящего в паре с МП i8086 на активацию банка уходит не больше 20 наносекунд), а из-за того, что при последовательном чтении (или записи) больщих объеиов информации за один и тот же промежуток времени передается ровно в 4 (в идеале) раза больше данных, так как циклы ввода-вывода ячеек "смещены" на 1/4 их длины - и соответственно с точки зрения ЦП память в таком режиме работает в 4 раза быстрее (при условии, что память медленнее шины как минимум в 4 раза). Более того - только при расслоении 4х ЦП типа IA32 сможет забить свою шину полностью, так как он читает ВСЕГДА пакетами несколько раз (обычно 4) по 4 байта (значение настройки памяти в BIOS типа 3-2-2-2 есть не что иное как длительность цикла чтения пакета, разложенная на 32-х разрядные слова). Кстати, при расслоении под банками понимаются отнюдь не слоты памяти DIMM или SIMM (хотя во времена IBM PC XT под банками понимались именно разъемы - но DIP). В современном исполнении модулей памяти КАЖДЫЙ (я подчеркиваю КАЖДЫЙ) модуль, который хочет считаться 32-х разрядным ДОЛЖЕН нести четыре таких банка внутри себя. Их просто не видно на самом деле - они скрыты в логике самих ИМС памяти. А термин "2-х банковый модуль памяти" означает на самом деле наличие дополнительного дешифратора и уже восьми таких банков. Дополнительный дешифратор определяет к какой четверке обращаться - к старшей, или к младшей.

По-моему лучше было ничего не объяснять, чем сморозить такую несуразицу.

wlad
Модератор
Сообщения: 4037
Зарегистрирован: 01.01.1970 3:00
Откуда: МИРянин, Нижнетагильский филиал
Контактная информация:

Сообщение wlad » 14.01.2004 6:48

BatmanОбратитесь лично к авторам.

max-sever
Модератор
Сообщения: 4568
Зарегистрирован: 01.01.1970 3:00
Откуда: "МИРовой Клуб" Вице-президент
Контактная информация:

Сообщение max-sever » 14.01.2004 8:21

Batman
Imagine a simple computer program that reads data from one page of memory, performs a simple calculation on it, and writes the result to another page of memory. Without interleave, the chipset must activate one bank and one page and read from it, then activate the other bank the other page and write to it, then activate the first bank and so on. With interleave, both banks and pages remain active, so the chipset only has to supply the address within the first bank's page and read it, then supply the address within the second bank's page and write to it.

The process of activating multiple pages of SDRAM has been nicknamed "interleave". The nickname was chosen because the process is similar to a process used on old computers, where the same address would be sent to two or four banks of memory and then the data in all the banks would be read or written in one step.

Источник: George E. Breese. Тоже не самый глупый на Земле человек. А потом твое "наукообразное" объяснение не по зубам половине посетителей форума.

RazzoR
Клубмен
Клубмен
Сообщения: 1623
Зарегистрирован: 01.01.1970 3:00
Откуда: Челябинский филиал Воевода Шадринского уезда Автомобиль: ВАЗ-2112 Квартира: четырёхкомнатная
Контактная информация:

Сообщение RazzoR » 14.01.2004 19:41

Сильно хитро сказано. Ты по-басячи, просто скажи!

DrEvil
Администратор Judge Dredd
Сообщения: 17062
Зарегистрирован: 17.01.2003 11:52
Контактная информация:

Сообщение DrEvil » 15.01.2004 19:29

Batman
В современном исполнении модулей памяти КАЖДЫЙ (я подчеркиваю КАЖДЫЙ) модуль, который хочет считаться 32-х разрядным ДОЛЖЕН нести четыре таких банка внутри себя. Их просто не видно на самом деле - они скрыты в логике самих ИМС памяти
И какая логика в модуле современной SDRAM может быть ? У ей унутрэ ? Если у каждой микросхемы 4 банка, то на модуль получается 8 банков минимум...а максимум 18*4. А есть еще видеокарты, принтеры... Вы, случаем, не с Rambus путаете ?

SerJEANt
Старожил
Сообщения: 1093
Зарегистрирован: 17.01.2003 15:05
Откуда: Московская обл. Характер скверный, нордический. Не женат.
Контактная информация:

Сообщение SerJEANt » 16.01.2004 17:22

max-sever RazzoR Мужики, в вашей статье надо бы чуток "благодарности" подправить:
Нашиму добровольному рецензенту
Вродя бы с буквой "Е" пишется.

max-sever
Модератор
Сообщения: 4568
Зарегистрирован: 01.01.1970 3:00
Откуда: "МИРовой Клуб" Вице-президент
Контактная информация:

Сообщение max-sever » 17.01.2004 0:45

SerJEANt Спасибо, отпишу в личку админам :)

Алекс Джи

Сообщение Алекс Джи » 20.01.2004 14:57

max-sever а еще спасибо нужно Алексею Unwinder'y :)

DrEvil
Администратор Judge Dredd
Сообщения: 17062
Зарегистрирован: 17.01.2003 11:52
Контактная информация:

Сообщение DrEvil » 20.01.2004 17:04

Так чем все кончилось ?

Леонид
Участник
Сообщения: 161
Зарегистрирован: 01.01.1970 3:00
Контактная информация:

Сообщение Леонид » 21.01.2004 4:41

max-sever
Я не нашел ошибкок в вашем объяснении VIA Bank Interleave. Объяснения Batman мне не понятны.

Немного дополнений от себя.
Bank Interleave на чипсетах VIA, определяет количество одновременно активных (доступных для последующей команды чтения/записи) строк (rows) в соответствующих банках памяти. Другими словами, чипсет дает модулю памяти последовательные команды активизировать оределенные строки одновременно в 2-х, или 4-х банках памяти. При этом, он имеет внутренний кэш (TLB) в котором всегда хранит адреса наиболее часто используемых на данный момент строк памяти (LRU - алгоритм). Если возникает запрос к памяти и он "попадает" в кэш строк открытого банка, то данные становятся доступными сразу после команды READ/WRITE и выборки колонки (columns) памяти. Если запрос не попадает в кэш (другая строка в банке), то чипсет вынужден закрыть активную строку памяти командой PRECHARGE, после чего ативизировать ее по новому адресу.

Batman
Участник
Сообщения: 402
Зарегистрирован: 01.01.1970 3:00
Откуда: Россия, Байконур
Контактная информация:

Сообщение Batman » 17.10.2004 22:55

Если по-русски, интерлив, работает примерно следующим образом:
При обращении к памяти ЦП выставляет контроллеру адрес, к которому он хочет обратиться.
При этом контроллер начинает цикл обмена с памятью, выдерживая всякие там Precharge Delay, RAS, CAS, RAS-to-CAS и т.п. Длина полного цикла, скажем для PC-133 составляет около 20-25 нс (зависит от параметров памяти). Тогда как такт шины 133 Мгц - всего 7.5 нс.
Естественно ЦП в то время как контроллер общается с памятью, сушит сопли. И соответственно тормозит. В нашем случае он пропустит два такта на третий.
Для ускорения сего, придумали следующее:
Так как ЦП к памяти все равно обращаетя в основном пачками по нескольку байт, то почему бы не запускать циклы обмена с памятью со смещением в такт шины, и в итоге получается ЦП не сопли сушит, пока микросхема памяти цикл провернет, а читает из соседней микросхемы.
А чтобы контроллер памяти с ума не сошел - микросхемы объединили в банки.
В остатке имеем следующее:
Первый байт блока ЦП читает из банка 1, второй из банка 2, третий из банка 3, четвертый - из банка 4, пятый - из банка 1, шестой - из банка 2, и т.п.
Такое достигается только при условии, что:
1. ЦП обращается к последовательным адресам, и контроллер памяти об этом заранее "знает" (ему ЦП на ушко шепнул :))
2. Контроллер памяти распределил банки памяти по адресному пространству таким образом, чтобы, например 0-й байт ИМС 1-го банка - адрес 0000, 1-й байт той же ИМС - адрес 0004, 0-й байт ИМС 2-го банка - адрес 0001 и т.п.
3. Все банки памяти могут активизироваться одновременно (to DrEvil - вот она - одновременная активность), дабы параллельно могли проходить разные стадии циклов обмена с памятью у разных банков.

К этому всему прибавляется еще и то, что ЦП, начиная с i486 работают с памятью пакетами следующим образом:
В начале пакетного обмена ЦП выставляет начальный адрес блока данных. При этом контроллер выставляет RAS и CAS. И читает-записывает первые 32 бита пакета. Затем RAS не меняется, а меняется только CAS (что существенно быстрее с точки зрения длительности цикла) и читает-пишет следующие 32 бита.
Почему 32 бита? Ведь микросхем в модуле 8 или 16. А в каждой по одному адресу расположен 1 бит. Да потому что 4 банка - вот модуль 32-х разрядный и получается. Первый байт идет с первого банка, второй байт - со второго, и т.п.
А 64-х разрядные модули и контроллеры так называются только потому, что они DDR - то бишь кидают за цикл обмена не 32 бита как обычно, а аж 64.
Здесь надо пояснить, что микросхемы памяти в модуле активизируются всегда пачками по 8 штук. При этом первая микросхема в пачке соответствует 0-му биту байта, а последняя - соответственно 7-му. И такая пачка микросхем состоит из четырех банков.

Ну а в современные контроллеры напихали еще и кэширование адресов (чтобы не было сильной зависимости от того как ЦП обращается к памяти - последовательно, или не очень), еще и буфер для асинхронной работы памяти и шины ввели, опять же - два канала присобачили и т.п.

Что касается нескольких банков в модуле - так это просто организуется - старшие адресные линии памяти обзываются линиями выбора банков и дело в шляпе. Современные микросхемы такие наглости позволяют, так как состоят из более мелких блоков памяти.
Как вариант у некоторых микросхем бывает просто несколько выводов Chip Select.

А то, что объясняет на инглише уважаемый George E. Breese это совсем другая технология, являющаяся по сути развитием Fast Page Mode (если кто помнит была такая память FPM DRAM). И то, что ее также назвали Interleave - лежит целиком и полностью на совести господ маркетологов. И штука эта - тема вообще из другого огорода, так как имеет отношение только непосредственно к особенностям контроллера памяти и ЦП, практически не касается самих микросхем.
"Ты мне про Фому, а я тебе про Ерему" (c) Народ.

DrEvil
Администратор Judge Dredd
Сообщения: 17062
Зарегистрирован: 17.01.2003 11:52
Контактная информация:

Сообщение DrEvil » 18.10.2004 8:47

А 64-х разрядные модули и контроллеры так называются только потому, что они DDR - то бишь кидают за цикл обмена не 32 бита как обычно, а аж 64.
Ведь микросхем в модуле 8 или 16
Жду комментариев - http://download.micron.com/pdf/datashee ... 6x64AG.pdf
Зачем у него шина данных шириной 64 бита, почему был вариант с 4-мя микросхемами памяти ( а у меня где-то валяется модуль 32mb PC100 вообще из 2-х микросхем) и т.д.

max-sever
Модератор
Сообщения: 4568
Зарегистрирован: 01.01.1970 3:00
Откуда: "МИРовой Клуб" Вице-президент
Контактная информация:

Сообщение max-sever » 18.10.2004 21:17

Batman
А то, что объясняет на инглише уважаемый George E. Breese это совсем другая технология, являющаяся по сути развитием Fast Page Mode (если кто помнит была такая память FPM DRAM). И то, что ее также назвали Interleave - лежит целиком и полностью на совести господ маркетологов. И штука эта - тема вообще из другого огорода, так как имеет отношение только непосредственно к особенностям контроллера памяти и ЦП, практически не касается самих микросхем.
"Ты мне про Фому, а я тебе про Ерему" (c) Народ.
:)
Речь велась именно об этом и убеждать читателя в том что это "происки маркетологов" в мои расчеты не входило.

Ответить