1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Утилита тестирования скорости подсистемы памяти cctc

Тема в разделе "Мастерская", создана пользователем madmaks, 24 авг 2016.

  1. madmaks

    madmaks

    Регистрация:
    7 янв 2007
    Сообщения:
    16
    Ну так, чтобы разнообразить обстановку, предлагаю тест памяти cctc с открытым исходным кодом:
    - Сам файл cctc
    - FAQ по использованию теста
    - Архив исходных текстов
    - Сравнение тестирования двух процессоров

    1. Что такое cctc V0.03
    Тест cctc это тот же самый тест cct386 образца 1990 года, но только в текстовом, высокопортируемом виде и работает на процессорах имеющих команду RDTSC (поддерживающих MMX), а также имеет открытый код.

    Этому тесту уже наверное лет пять, но вряд ли вы о нем слышали.

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

    Но тест cctc конечно не виноват. С помощью теста cctc, также как и с помощью cct386 можно выяснить:
    - размеры кэша L1/L2/L3 (в байтах);
    - проиводительность каждого типа кэша и системной памяти в операциях блочного ввода-вывода (в байтах/сек);
    - число одновременно работающих каналов/модулей/банков системной памяти (в штуках);

    2. Как использовать cctc V0.03
    Для того чтобы запустить тест cctc, вам надо знать частоту вашего процессора (можно как пару чисел шина, множитель ядра), а также запустить процессор на время выполнения теста в работу на этой частоте (например с помощью настроек плана электропитания).

    Для того чтобы выяснить скорость передачи данных в байтах/сек, над использовать тестовый шаблон №1 и умножить значение полученных скоростей на 2.

    Для того чтобы выяснить число одновременно работающих каналов системной DDR3 памяти, надо знать параметры установленой DDR3 памяти:
    - базовая частота (666МГц например)
    - CAS Latency, CL (9 например)

    3. Параметры работы DDR3 памяти.
    Память характеризуется базовой частотой (666МГц например) и задержкой, нам для блочной передачи интересна задержка CL (9 например).

    3.1
    Данные одного канала памяти переносятся по 64 битной шине пакетами, по 8 передач за 4 такта (DDR - две передачи за такт), т.е. 64 байта за пакет.

    Задержка CL означает что идущие подряд пакеты могут передаваться друг за другом не чаще, чем через число тактов CL.

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

    На самом деле, по той же шине надо еще иногда успевать передавать команды об адресе следующего пакета, поэтому число CL не должно быть менее 5: четыре такта на передачу данных и один такт на передачу команды.

    Таким образом (если данные передаются беспрерывно) для памяти с такими скоростными возможностями:
    - максимальная скорость передачи пакетов равна 666/9= 74МГц (Мпакетов/с)
    - максимальная скорость передачи данных равна 74Мпакетов/с*64байт/пакет= 4736 Мбайт/с

    Для очень быстрой, теоретической DDR3 памяти, которая передает данные каждые 4 такта, максимальная скорость передачи будет равна (666/4)*64= 10700 Мбайт/с.

    Это то же число 10700, которое характеризует пропускную способность канала памяти, также используется как рейтинг DDR3 памяти с базовой частотой 666МГц. Ну, это такой мелкий, невинный обман, назвать память с базовой скоростью 4736 Мбайт/памятью 10700 Мбайт/с.

    В качестве рейтинга DDR3 памяти используется и число 1333, которое показывает что на частоте 666МГц передачи даных идут с удвоенной скоростью. Это привлечение к памяти путем больших чисел, хоть и без обмана, но недопустимо с технической точки зрения, поскольку в итоге люди просто не могут понять, когда и про какую память идет речь.

    3.2
    Ключевым параметром работы DDR3 памяти является "максимальная скорость передачи пакетов". Как бы не увеличивали вы частоту шины более 666МГц, этот параметр не может быть изменен, и вам придется наращивать CL.

    Поскольку минимальный CL равен 5, то CL равный 10 это "двойной минимальный". Если теперь поставить два канала параллельно (128 бит) и читать из них данные одновременно, то вы получите виртуальную DDR3 память на виртуальной 64 битной шине с виртуальным CL равным 5, т.е. с максимально быстрым.
    Такая конфигурация каналов называется работа каналов с чередованием.

    Этот прием не новый, он использовался интел еще в первопнях, когда 32 битная DRAM память, способная работать на частоте 33МГц, объединялась в два канала общим размером 64 бита для создания виртуальной 32 битной шины 66 МГц.

    Если вы подняли CL канала до 15, то вам можно использовать трехканальную шину, которая есть на серверных процессорах интел, для достижения того же эффекта.

    Поднимать базовую частоту памяти есть смысл, т.к. от этого уменьшается реальное время доставки данных из памяти до процессора, особенно если запросы к памяти одиночные (большой кэш внутри процессора). Это время доставки равно 4/базовую_частоту и уменьшается в два раза при росте базовой частоты в два раза. Увеличивая число каналов можно сохранять высокую блочную скорость и уменьшать время доставки одиночных данных.

    3.3
    На один канал можно установить не один, а два модуля, это аппаратные по своим причинам ограничения.
    Ясно, что можно активировать разные модули на одном канале одновременно (на самом деле чере 4 CL, раньше активировать нет смысла, т.к. шина будет занята), так словно эти модули стоят в разных каналах, таким образом, если у вас на одном канале стоят два модуля, их минимальный CL не должен быть меньше 9 для эффективной блочной передачи.

    При этом обя модуля смогут утилизироват всю пропускную способность канала, но за время CL они не способны доставить данных больше чем размер пакета канала.

    Два одновременно работающих канала могут доставить за время CL два пакета и хотя общая скорость обоих конфигураций будет одинакова, два канала быстрее передают одиночные данные (эффект эквивалентный поднятию базовой частоты).

    Такая конфигурация модулей на канале называется работа модулей с чередованием.
    С другой стороны, для передачи одиночных пакетов по каналу максимальный эффективный CL каждого модуля не должен быть больше 5.

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

    В случае же если CL равен 9 по иным причинам (например, вы подняли базовую частоту), то можно установить два модуля на один канал (если нет больше каналов), при этом блочная скорость вырастет.

    3.4
    На один модуль можно установить не один, а два и более банков (в DDR3 их теоретически может быть до 8 штук).

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

    Такая конфигурация банков на канале называется работа банков с чередованием.

    Несколько банков на модуле ничем не отличаются от нескольких модулей на канале (это даже лучше по электрическим причинам).

    3.5
    Работа каналов/модулей/банков без чередования.

    В таком режиме вся память разделяется на большие блоки, каждый из которых физически находится в одном канале/модуле/банке.

    Такая организация позволяет обслуживать множество одновременно работающих мастеров (процессоров или контроллеров ПДП), монопольно работающих каждый в своем большом блоке, с утизизацией всей пропускной способности шины памяти, при том что каждый мастер будет работать без ускорений связанных с чередованием и без увеличения размера блока (размер блока равен одному пакету DDR3).

    Иначе, если память находится в режиме чередования, то есть риск, что при многомастерном беспрерывном обращении будут возникать коллизии, когда контроллер памяти будет объединять запросы к памяти от разных мастеров и эти запросы одновременно будут попадать в один и тот же модуль или банк, но с разными адресами, и такие запросы придется выполнять последовательно, мастера начнут простаивать ожидая друг друга.

    В режиме чередования, ускорения вводятся контроллером памяти по своей инициативе в виде "предвыборки вперед", когда один мастер посылает запрос на один DDR3 блок и других запросов на другие блоки DDR3 нет, в этом случае контроллер памяти расширяет запрос и делает предвыборку в L3 кэш всей пропускной способности памяти.

    Если же в режиме чередования есть одновременно запросы на несколько разных DDR3 блоков, то контроллер памяти их объединяет в один запрос, если эти запросы попадают в разные каналы/модули/банки, если остается незадействованная пропускная способность, то контроллер заполняет ее предвыборкой.

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

    Задержка CL применяется как единственная только тогда, когда страница все время открыта, т.е. когда идет последовательная блочная передача, иногда блочные передачи прерываются активациями новых страниц (ROW, вносится разовая ras-to-cas latency) и циклами регенерации памяти (precharge, вносится разовая precharge time latency).

    В режиме блочной передачи активация страниц и регенерация происходит относительно редко (условно 10% пропускной способности), но вместе с запросами от других устрйоств в системе на тестах можно видеть что в обычным образом работающей системе не менее 25% пропускной способности памяти занимается фоновыми равноприоритетными и скрытыми процессами, использующими память.

    Эффективность работы с памятью сильно зависит от эффективности контроллера памяти (обычно он расположен в процессоре).

    3.6
    То, какова будет реальная производительность памяти, естественно зависит от организации конкретной памяти по банкам и модулям и от возможностей конкретного процессора правильно активировать предвыборку, чтобы избегать простоя шины, утилизируя все пропускную способность.

    Тогда сколько DDR3 памяти и в каких модулях надо поставить?

    Это вопрос скорее теоретический, т.к. на х32 для windows ставят вообще 2..4Гб памяти, обычно два модуля по 2Гб на два канала, выбора нет.

    Для х32 систем поддерживающих PAE (это некоторые серверные версии х32 windows) или для систем х64 есть некоторые вариации.

    DDR3 память имеет:
    - почти квадратную адресную матрицу размером 16х14 (всего 30 бит, а это 4Гигабайта памяти для 32 битной шины данных, два младших бита всегда нули, но в DDR3 не используются А10 и А12 биты адреса CAS);
    - для каждого из 8 банков;
    - и шину данных 64 бита;
    т.е. без банков модуль DDR3 памяти может адресовать до 8 Гбайт памяти, с банками - до 64 Гбайт.

    По маркировке модуля памяти понять какова организация памяти не всегда можно, но если размер памяти модуля больше 8 Гбайт, то банки быть должны, также возможности использовать конкретную структуру памяти зависят от конкретного процессора.

    Установка двух модулей любой организации в разные каналы в режиме чередования каналов и банков обычно более эффективна, чем иные варианты.

    3.7
    Дополнительно на эффективность работы с памятью влияет система команд процессора - способность процессора выполнять программы которые обращаются к памяти с намеренной предвыборкой, а не просто с предвыборкой вперед которая работает начиная с L2 кэша процессора i386 и успешна по причине локальности программ.

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

    4. Что удалось найти с помощью cctc V0.03
    Много чего интересного, например:

    4.1
    Процессоры на AM3
    - те из AM3, что имеют кэш L3, у тех он действительно работает, работает быстрее чем системная память;
    - все протестированные AM3 процессоры, работая с DDR3 памятью в двухканальном режиме, не реализуют двухканальную прередачу данных и даже недотягивают до одноканальной производительности DDR3 памяти, т.е. "двухканальность" для них означает только то, что большее число модулей может быть установлено разом (число установленных на одном канале модулей DDR3 ограничено).

    4.2
    DDR3 память типа kingston value ram показывает работоспособность на высоких параметрах скорости: 92МГц скорость передачи пакетов (маркирована как 74МГц).

    4.3
    Процессоры интел 1156
    Контроллер памяти процессоров интел 1156 (начиная как минимум от i3) реализует двухканальную прередачу данных и достигает скорости передачи пакетов.

    Процессоры интел 1155
    Контроллер памяти процессоров интел 1155 ib (даже на некоторых целеронах) способен переносить блочные данные на некоторых типах установленной памяти со скоростями до 50% выше скорости передачи пакетов, это может говорить о том, что этот контроллер памяти умеет использовать не только чередование каналов, но и иные режимы предвыборки DDR3 памяти, которая такие режимы поддерживает.

    4.4
    Как это происходит на 1155 ib?

    Чтобы это выяснить, надо вспомнить то существует в целом два пути повышения производительности памяти:
    - параметрический
    - схемотехнический

    а)
    Параметрический это когда улучшаются сами компоненты, которые хранят данные.

    Например модуль памяти sdram-60нс передает пакет, состоящий из 1(sim), 4(sim), 8(dim) байт, со скоростью 16МГц.

    В этом смысле DDR3 память передающая пакеты со скоростью 92МГц намного лучше чем sdram-60нс параметрически и эквивалентна sdram-10нс.

    б)
    Также DDR3 память передает пакеты состоящие из 64 байт, т.е. за одно и то же время пакета передавая больше данных, чем sdram.

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

    в)
    DDR3, как и все DDRх, использует пакетную передачу, т.е. внутри модуля DDR3 существует 8 параллельных каналов по 64 бита и выборка по команде происходит одновременнно из 8 каналов, выбранные данные запоминаются во внутренних регистрах и затем последовательно передаются на шину. Затем процесс повторяется. Так это все выглядит снаружи DDR3.

    Именно эту скорость мы называем базовой скоростью передачи пакетов и это она рассчитывается как 666/CL.

    Для этой скорости фазы выборки данных и фазы обмена данными уже совмещены (именно поэтому CL для DDR3 не должен быть менее 5) и выбирать данные быстрее невозможно.

    Возможный вариант высокой скорости в том, что установленная DDR3 память имеет два банка, т.е. в этой памяти 16, а не 8 параллельных каналов, которые одновременно выбирают данные (но с помощью двух разных команд), а затем последовательно передают данные в двух пакетах по 64 байта.

    Два банка памяти на одном канале это то же самое, что два модуля памяти на одном канале, минимальный эффективный CL для двухбанковой памяти должен быть не менее 9, а число модулей на канале не более одного.

    4.5
    Оракул.

    Все схемотехнические ухищрения в виде чередования каналов/модулей/банков приводят только к тому, что растет размер пакета и растет средняя скорость обмена с памятью большими блоками, а задержка доставки данных остается зависима сторого от параметров памяти.

    Использование пакетной передачи говорит о том, что современная оперативная память уже вовсе не память с произвольной выборкой RAM, как это было в ранних ПК и рано или поздно, обмен с тем, что называется системная память, будет происходить блоками размером с сектор, как с диском и это единственный способ ускорить обмен данными с памятью.

    В современных компьютерах процессор работает на столько быстрее системной памяти, что процессор ждет пакет из памяти как сектор с диска и возможность полностью заполнить пропускную способность памяти очень важна.

    Кэш L2/L3, находящийся внутри процессора также организован пакетами, размером с кэш линию, обмен данными с одним битом кэш линии ничем не отличается от обмена данными со всеми битами кэш линии.
    Единственное, что может претендовать на роль RAM в современном компьютере, это кэш память L1, эффективный обмен с которой происходит словами размером с регистр (32 бита для x86).

    Сколько кэш памяти L1 в вашем процессоре?

    Вы все знали, что слова оракула о том, что "640Кб RAM вам хватит надолго" окажутся пророческими. У вас еще до сих пор нет 640Кб настоящей RAM памяти.
    ===
     
  2.  
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление