Что такое частота контроллера памяти в cpu z
Расшифровка значений в CPU-Z
CPU-Z расшифровка значений позволяет более подробно разобраться в каждом из рассматриваемых параметров. Всего доступны более 10 элементов. Каждый из них имеет наборы функций с подробным описанием. Большинство значения простому пользователю не понять.
Как расшифровать основные значения в CPU-Z
Могут возникать вопросы, связанные с тем, для чего каждый параметр установлен в системе. Если распределить и расшифровать точные значения, при изучении характеристик комплектующих уже будет проще ориентироваться в установленных параметрах.
Определение 1 Расшифровка частот
Частоты играют важную роль в каждом из представленных к рассмотрению устройств в CPU-Z. Частоты напрямую влияют на производительность установленного модуля.
Важно! Чем они выше, тем скорость потока передачи данных больше.
Для проверки можно выполнить следующие действия:
Частоты по параметрам переменчивые. Особенно это отражается на центральном процессоре. При нагрузке уровень частот передачи данных может возрастать.
В состоянии сна или покоя производительность частот снижается. Это делается для того чтобы снизить нагрузку на процессор.
Определение 2 Расшифровка основных наименований
Кроме уровня частот есть и другие понятия. Каждое из них имеет своё значение. Вторым по распространенности является параметр кэш памяти. Он отвечает за скорость доступа к объектам находящимся в постоянной памяти. Благодаря многоуровневой системе скорость получения информации возраста во много раз.Для ознакомления информации о как памяти необходимо выполнить следующее:
Все модули тестируются раздельно.
Больше всего кэш память влияет на производительность процессора. В нём расположенные несколько уровней кэша с установленным объёмом памяти в килобайтах.
Проблемы отображения параметров оперативной памяти в CPU-Z и способы их решения
CPU-Z для Windows показывает сведения об оперативной памяти (ОЗУ, RAM), центральном процессоре, графическом ускорителе, материнской плате. Умеет тестировать процессор, оценивать его стабильность под продолжительной нагрузкой. Программа CPU-Z отобразит частоты планок оперативной памяти, их тайминги, дату выпуска и прочие сведения. Рассмотрим, что ещё приложение расскажет об ОЗУ, покажем около десятка способов изучения энергозависимой памяти.
Что такое частота оперативной памяти
Тактовая частота ОЗУ показывает количество выполняемых за секунду операций. Выражается в МГц или ГГц. Один герц – один цикл считывания или записи информации. Выше значение – больше информации передаётся из/в оперативную памяти за такт. Реальное быстродействие ниже из-за задержек между циклами чтения-записи (тайминги).
Заметной разницы в синтетических и игровых тестах между RAM с характеристикой 2133 и 3200 МГц не выявлено. Разница в 1-2 fps иногда появляется в ресурсоёмких играх. Бенчмарки и игрушки больше полагаются на связку видеокарта-процессор.
Диапазон частот оперативки в зависимости от типа памяти
Стандарт | Частота, МГц | Объём одной платы |
DDR | 100-350 | 256 МБ – 1 ГБ |
DDR2 | 200-600 | 512 МБ – 4 ГБ |
DDR3 | 800-2400 | 1 ГБ – 8 ГБ |
DDR4 | 1600-3200 | 2 – 16 ГБ |
DDR5 | 3200-8400 | 8 – 64 ГБ |
Как посмотреть частоту оперативной памяти в CPU-Z
В CPU-Z частота памяти отображается во вкладке «Memory» – параметр «DRAM Frequency». Кроме неё здесь увидите:
В блоке «Timings» – информация о задержках, соотношении характеристик системной шины и RAM.
В соседней вкладке «SPD» обнаружите выпадающий список «Memory Slot Selection» с числом опций, соответствующим количеству слотов для RAM на материнской плате. Переключаясь между ними, получите информацию об установленном в физический слот модуле ОЗУ:
В разделе «Timings Table» – увидите поддерживаемые частоты и тайминги при переключении в разные режимы, напряжение ОЗУ.
Что делать, если CPU-Z не показывает оперативную память
CPU-Z не отображает данные о RAM во вкладке «SPD» по двум причинам:
В первом случае выберите иной «Slot #x».
Во втором случае:
Какие еще показатели оперативной памяти показывает CPU-Z
Утилита получает информацию о задержках памяти:
Почему CPU-Z показывает низкую частоту памяти
Начинающие пользователи пугаются, что CPU-Z показывает более низкую частоту памяти, чем реальная, имея ввиду «Uncore Frequency». Этот параметр показывает половину частоты DDR, удвоенную или непонятно откуда взятую величину, не всегда кратную базовой. Иногда поле остаётся пустым. Это не страшно. При условии, что ОЗУ на компьютере или ноутбуке работает не на максимальной частоте допустимого диапазона (для DDR3 – 800-2400 МГц), её можно повысить в БИОС.
Другие способы узнать частоту оперативной памяти
Частотные характеристики ОЗУ покажут следующие инструменты:
Частота наносится на сами модули, содержится в спецификации устройства на официальном сайте.
Что такое частота контроллера памяти в cpu z
7357 радости жизни
О программе и её основных возможностях.
Скачать CPU-Z из файлового архива modlabs.net можно тут
Программа способна определять следующее железо и его характеристики:
Процессор
Материнская плата
Память
Система
Список поддерживаемого железа и установка
Процессоры:
Pentium 4, Pentium 4-M, Pentium M, Pentium D, Pentium XE, Celeron (P4/PM) и Xeon (P4)
Pentium Dual Core, Core Solo, Core Duo, Core 2 Duo, Core 2 Quad, Core 2 Extreme, Celeron (CL) and Xeon (C2D/C2Q) Itanium, Itanium 2 Core i3, Core i5, Core i7, Core i7 Extreme
AMD Am5x86, K5, Geode LX, K6, K6-2, K6-III, K6-2+, K6-III+
Athlon (4, XP, MP), Duron, Sempron (K7),
Athlon 64, Athlon 64 X2, Sempron (K8), Turion, Opteron, Athlon 64 FX Phenom, Phenom II, Athlon II, Sempron (K10,5)
VIA C3 (Samuel, Samuel2, Ezra, Ezra-T, Nehemiah), C7, C7-M, Nano (Isaiah)
Transmeta Crusoe TM3200, TM5400, TM5500, TM5600, TM5800
Чипсеты:
Intel i430TX, i440LX, i440FX, i440BX/ZX, i810/E, i815/E/EP/EM, i840, i845, i845E, i845G, i850/E, i845PE/GE, E7205, E7500, E7520, i852, i855, i865P/PE/G, i875P, i915P/G, i915PM/GM, i925X/XE, i945P/PL/G/GZ, i945PM/GM/GT, i955X/XE, P965, Q965, G965, GL960/GM965/PM965, i975X, 5000X/P/Z, 5400A/B, P35, G33, G31, Q35, Q33, X38, Q45, X48, P45, X58, P55, H55
VIA Apollo VP3, Apollo Pro, Apollo Pro +, Apollo Pro 266, KX133, KT133(A), KT266(A), KT400(A), KT600, P4X266(A), PT880, PT880 Pro, K8T800, K8T890, K8T900, P4M800CE, P4M890, P4M900, CX700/VX700
NVIDIA nForce, nForce2, nForce3, nForce4, nForce4 SLI Intel Edition, GeForce 6100/6150 (nForce 410/430), nForce 520/550/560/570/590, GeForce 7050/7100/7150, 650i, 680i, 740i, 750a/780a, 750i, 770i, 780i, 790i, MCP79/7A, GeForce 320M, ION
ATi RS350, RS400, RS480/RX480, RS482, RD580/RX580, RS600/RD600, RS690, RS700, RD790
SiS 645, 645DX, 648, 648FX, 649, 655FX, 655TX, 656, 662, 735, 756, 761GX, 760, 760GX, 755, 755FX, 741, 741GX, 671/FX/DX/MX
AMD AM-751, AM-761, AM-762 (760MP), 780G, 790GX, 870/880G/890GX
Память:
SDR, DDR, DDR2, FB-DDR2, DDR3, RDRAM, поддержка расширенных профилей EPP и XMP.
Установка:
Вкладка Processor
Знакомство с интерфейсом
Открыв программу, первое, что мы обнаружим – аскетичный серый интерфейс классических «окошек». И это большой плюс – при том количестве информации, что программа предоставляет о системе, более разнообразный интерфейс усложнял бы восприятие. Для написания статьи я использовал чуть модифицированную (но об этом позже) версию 1.54 (номер версии прописывается на каждой закладке программы слева внизу).
Главное окно выглядит следующим образом:
Мы видим четыре группы полей: Processor, Clocks, Cache, Selection; здесь же находятся семь вкладок и две кнопки. Кнопка OK закрывает программу (посмотрели? OK, хватит). Кнопка Validate открывает окно валидации (но об этом чуть позднее).
Первая группа, Processor является самой важной – она содержит информацию о том, что за процессор(ы) у нас установлен.
Следующая группа – это Clocks. Стоит заметить, что в скобках подписано, к какому ядру (нумерация начинается с нуля) относится информация, отображаемая в данной группе. Простейший способ переключения ядер – нажать на рабочей области окна программы правой кнопкой мыши и выбрать нужное ядро. А теперь про поля:
Группа Cache. Данная группа отображает краткую информацию о кэш-памяти CPU.
Последняя группа на этой закладке подытоживает информацию о многопоточности системы.
Вкладка Cache
Следующая закладка, «Cache«, отображает информацию о кэш-памяти. Каждая группа на данной вкладке отвечает за свой кэш. Так, кэш-память делится по уровням, входя в состав иерархической структуры подсистемы памяти. Кэш служит для маскирования запросов в оперативную память. Подробное описание кэша выходит за рамки данной статьи. Группы представлены следующие: Кэш-память первого уровня для данных (D-cache), кэш первого уровня для инструкций (I-cache), кэш второго уровня и (есть не у всех процессоров) кэш третьего уровня. Рассмотрим теперь пункты каждого типа кэша:
Вкладка Mainboard
Вкладка «Mainboard«. Как следует из названия, содержит информацию о системной плате.
Группа Motherboard собрала в себе следующие пункты:
Вкладка Memory
Скриншот вкладки памяти на RD600.
Вкладка SPD
И теперь, собственно, данные, что мы можем видеть на данной вкладке. Первая группа, Memory Slot Selection:
Вкладка Graphics
В группе Display Device Selection всего два пункта:
Группа GPU. Отображает информацию о видеопроцессоре.
Справа от группы можно увидеть логотип производителя чипа (если CPU-Z его верно определяет).
Группа Clocks объединяет информацию о частотах видеокарты.
Группа Memory объединяет пункты, информирующие о характеристиках подсистемы памяти видеокарты.
Вкладка About
Последняя и достаточно очевидная вкладка, «About«.
Очень полезной функцией CPU-Z является создание отчётов о системе.
Валидация (Validation)
Очень важный элемент функциональности CPU-Z. Позволяет сделать краткий отчёт о системе в зашифрованном виде и выложить его на сайт валидации (сейчас это http://valid.canardpc.com/ ). Сделать валидацию можно в режиме онлайн. Для этого нужно перейти на вкладку «About» и нажать кнопку Validation. В появившемся окне в группе «Online mode» ввести имя (по умолчанию подставляется имя компьютера), e-mail (опционально, если не ввести, то на почту не придёт письма о добавлении записи в базу валидаций и ссылки на результат). Затем нажать кнопку Submit. Если снять галочку «publish online«, то у результата будет просто проверена контрольная сумма, но добавлен в базу он не будет.
Обычно же результаты выкладывают вручную (редко, когда на тестовом стенде есть интернет). Можно сделать это следующими способами:
Результатом любого из этих трёх действий будет файл с валидацией. Раньше валидация была текстовой и имела контрольную сумму в конце, что позволяло смотреть, что это за валидация и на какой частоте она сделана. Сейчас файл является полностью зашифрованным, поэтому, если вы собрались разгонять несколько процессоров подряд, не забудьте складывать результаты, полученные на одном процессоре в отдельную папку перед установкой нового. По умолчанию, при нажатии F7 в название файла валидации дописывается частота процессора, что является ещё одним плюсом относительно других способов.
Горячие клавиши
Параметры запуска
Программа имеет возможность использовать запуск с параметрами.
Файл конфигурации
Вместе с программой прилагается файл конфигурации, cpuz.ini, с помощью которого можно задавать особые параметры работы CPU-Z. По умолчанию, выглядит он следующим образом:
[CPU-Z] TextFontName=Verdana TextFontSize=13 TextFontColor=000060 LabelFontName=Verdana LabelFontSize=13 PCI=1 MaxPCIBus=256 DMI=1 Sensor=1 SMBus=1 Display=1 ShowDutyCycles=0
Некоторые из этих параметров можно использовать в качестве твиков. Например, при отключении всех вышеуказанных параметров CPU-Z грузится слегка быстрее. Когда система в разгоне проходит Superpi 1M, но валится при загрузке CPU-Z, это довольно обидно. Возможно, кому-то подобное поможет. Однако, если отключить всё, то не будут показываться тайминги, а правила HWBot требуют как вкладки CPU, так и Memory. Выходом является не отключать для 3D тестов и большинства 2D тестов параметр PCI, а выставить MaxPCIbus=0, что заставит программу сканировать только северный мост (который всегда является нулевым устройством на шине и содержит информацию о таймингах и делителе памяти). Теоретически, это должно давать небольшой прирост стабильности за счёт облегчения самой программы.
Пара слов о микроизменениях в версиях CPU-Z. Заключение.
Как я сказал, я использовал модифицированную версию, в чём же отличие? Новейшая версия, 1.54 показывала про мой процессор вот что:
Обсуждение материала ведётся в этой теме нашего форума.
Контроллер памяти: структура и синхронизация
Введение
Много ли вы слышали о контроллере памяти? Возможно, вы когда-то пытались найти информацию о контроллере памяти, но толком ничего не находили. Даже в книгах, к сожалению, есть только небольшие упоминания. Получается, что все знают про то, что контроллер памяти существуют, но никто не имеет представление, что это такое (именно на таких читателей рассчитана данная статья). Мне повезло наткнуться на статьи инженеров, которые решают проблемы проектирования и синхронизации контроллеров памяти в своих проектах. Эту информацию мы используем, чтобы понять, как устроен и как работает КП на высоком уровне.
Для самых маленьких
реклама
Процессору необходимо обращаться в память, как для получения инструкций, так и для данных, требуемых при исполнении инструкций. В качестве памяти может служить и основная оперативная память. Здесь появляется контроллер памяти, обрабатывающий запросы процессора. В общем-то о его предназначении вы узнаете, если прочитаете статью полностью.
Как устроена память
Во-первых, разберёмся с тем, как устроена память в принципе. Вы наверняка знаете, что у плашки оперативной памяти есть чипы памяти. Характеристика «плотность чипов» как раз обозначает объём в чипе памяти. Всё просто. Если есть чипы, емкость которых по 8 гигабит каждая (по одному гигабайту каждая), то 8 таких в сумме дадут 8 гигабайт (64 гигабит), поэтому мы и скажем, что это плашка на 8гб. Сам чип состоит из нескольких банок, а в свою очередь банки состоят из совокупности ячеек. Объём всех ячеек в чипе памяти одинаковый, причем ячейка по объёму не обязательно равна одному биту.
реклама
Важно сказать, что в реальности данные и адреса не направлены в разные стороны. Это единая шина, у которой линии разделены соответственно на информационные (D) и адресные (A) линии. А могут быть не разделены, если применяется мультипелксная шина. В такой реализации и адреса, и данные передаются по одним и тем же линиям последовательно. Это может решить проблему расфазировки шины (когда данные приходят быстрее адреса), но мультиплекс будет медленнее. Помимо всего прочего в статье И.А Петрова упоминается DDR4 3DS, использующая стеки чипов (друг на друга кладутся), которые взаимодействуют через связь сквозь кремний (through silicon via, TSV). Один такой чип в стеке называется логическим ранком. Логической страницей называется матрица внутри банка.
Механизм интерливинга и конвейерная шина памяти
Теперь разбираемся с механизмом интерливинга. Из статьи И.А Петрова: «В каждом логическом банке (размером от 256 Мбайт до 2 Гбайт) можно одновременно задействовать лишь одну страницу памяти (8 Кбайт). Переход к другой странице в рамках одного логического банка возможен через 45–50 нс». Далее написано, что механизм интерливинга, то есть перемешивание страниц памяти, находящихся в других банках памяти, избавляет от этой проблемы. Сначала непонятно каким образом, но это действительно так. Оказывается, банки для того и были введены, чтобы осуществлять несколько параллельных запросов к ним. Это так называемая конвейерная архитектура шины памяти. Если вы знакомы с конвейерной архитектурой ядер процессора, тогда вы примерно понимаете насколько круто, что у памяти такая тоже есть.
реклама
Здесь CK — это линия, по которой идут импульсы от тактового генератора с определенной частотой. Можно сказать, что шина работает на частоте CK или синхронизируется по CK. Как мы видим, циклом шины является период от фронта (переход от логического 0 к 1, поднятие по импульсу) синхросигнала до фронта следующего синхросигнала. Группа управляющих линий обозначена CMD, адресных — ADDR, а информационных — DATA.
Запрос к памяти состоит из трёх этапов:
1) Открытие строки для подготовки к обращениям (ACT).
2) Обращение к отдельным словам строки или к нескольким словам при использовании пакетного режима (длина пакета фиксирована).
3) Закрытие строки (PRECHARGE) и подготовка к следующей активизации.
В нашем примере важно, чтобы фаза активизации (ACT) предшествовала фазе READ (или WRITE) на 2 цикла (обязательно смотрите на рисунок). Также известно, что данные готовы на следующем цикле после фазы READ (WRITE), а PRECHARGE происходит минимум на два цикла позже фазы READ (WRITE). Данные обязательные условия называются протоколом. Все операции занимают определенное число циклов шины, поэтому известно, когда получать данные, когда открывать и закрывать строку. Конвейерный режим нужен, чтобы исключить простои. Ещё раз смотрите на рисунок: без конвейерного режима на цикле 1 образовался бы пустой цикл. Вместо простоя происходит активизация строки из другого банка. Преимущества очевидны.
Структура контроллера памяти
реклама
Это КП планировшегося Эльбруса 16CB. В контроллерах памяти есть буферы записи и чтения (в нашем примере этот буфер расположен за пределами КП). Когда КП получает данные от основной ОЗУ, данные сначала помещаются в буфер чтения. Аналогично с записью: данные от ядер поступают в буфер записи. Буферы выступают в роли промежуточной памяти для хранения, так как удобно получать данные большего объёма. Ведь ядру, которому понадобились данные по адресу A, с большой вероятностью понадобятся данные по адресу A+1. Это так называемый принцип локальности, на нем также основывается принцип кэширования. Буфер записи в свою очередь реализует отложенную запись.
В реестре запросов, как ни странно, хранятся запросы обращения к основной памяти. Каждая ячейка реестра включает в себя адрес, тип операции, признак готовности данных для записи, возраст запроса и стадию обработки запроса.
Планировщик занимается тем, что выбирает порядок запросов так, чтобы сократить среднее время на обработку одной заявки. Как это достигается? С помощью последовательно соединенных фильтров планировщика. На выходе планировщика расположен блок формирования операций для шины памяти, в котором запросы полностью перекрываются (отсутствуют пустые циклы на шине, что уже было описано выше).
В Эльбрус 16CB фильтры соединены в таком порядке:
фильтр ресурсов, задерживающий запросы, выполнение которых невозможно вследствие недостаточности объемов буферов чтения или записи
фильтр адресной зависимости, обеспечивающий корректную последовательность обращений в случае обращений по одному адресу (запросу по одному адресу должны выполняться последовательно. Представим ситуацию, что в реестр поступает запрос на запись данных в оперативную память на адрес A, а следующий запрос — чтение данных по адресу A. Без этого фильтра, так как чтение имеет более высокий приоритет над записью, считались бы устаревшие данные)
фильтр приоритета выполнения запроса в открытую страницу логического банка, исключающий дополнительные операции открытия страниц (ACT). Запрос отсеивается, если он попадает в закрытую страницу, хотя в то же время есть запросы, адресованные в открытую страницу. Данный фильтр минимизирует команды активизации, что и уменьшит среднее время обработки заявки в реестре.
фильтр на приоритет операций чтения. Чтение гораздо важнее записи для производительности, поэтому у планировщика в приоритете запросы чтения
фильтр протокольных блокировок, задерживающий запросы, нарушающий протокол (об этом было раньше и ещё будет позже)
фильтр возраста. Выбирается самый старший запрос, то есть, который вошёл раньше всех в реестр.
О фильтрах почти полностью скопировано со статьи И.А Петрова, но кое-где добавлены собственные пояснения. Ниже приложен схематичный рисунок планировщика
Теперь про протокольные блокировки. Когда мы говорили о конвейерной шине памяти, я написал, что есть некий протокол. Его необходимо соблюдать для каждого банка памяти с помощью счетчиков-таймеров внутри контроллера протокольных блокировок. Из книги Танебаума: «Как Core i7 узнает, когда следует ожидать возвращения данных команды READ и когда можно выдавать новый запрос к памяти? Для этого он осуществляет полное моделирование внутренней деятельности каждой подключенной микросхемы DDR3. Соответственно он ожидает возвращения данных в правильно выбранном цикле и знает, что операцию предзаряда не следует начинать раньше чем через два цикла после последней операции чтения. Core i7 может прогнозировать все эти события, потому что интерфейс памяти DDR3 работает синхронно, так что все операции занимают четко определенное количество тактов шины DDR3.»
Моделированием внутренней деятельности как раз занимается контроллер блокировок. Фильтр протокольных блокировок в планировщике использует это и отсеивает невозможные запросы. Основой динамической памяти (любая SDRAM DDR относится к динамической памяти) является конденсатор. Конденсатор может хранить заряд в течении короткого времени, иными словами может служить битом памяти. Ведь у бита, как и у конденсатора, есть два состояния. У конденсатора либо есть заряд (бит 1, логический 1), либо его нет (бит 0, логический 0). При считывании конденсатор разряжается, и если заряд был, то значение однобитной ячейки равно единице, и это значение мы можем использовать. Также после считывания нужно заряжать конденсатор заново, если заряд был (другими словами: значение однобитной ячейки должно быть равно одному, если её значение было равно одному до разрядки). Контроллер регенерации памяти как раз занимается тем, что выдает команды регенерации памяти.
Обычно для реализации многоканального режима работы устанавливают несколько рассмотренных нами одноканальных контроллеров памяти. Как, например, двухканальный контроллер памяти Эльбруса S2 включает по сути два отдельных контроллера памяти, находящиеся в одном блоке.
Синхронизация подсистемы памяти
В подсистеме памяти чаще всего различают три частотных домена: системный домен, домен контроллера памяти и домен самой памяти. Пример представлен ниже.
Решение проблемы синхронизации включает в себя следующие вопросы: какие тактовые частоты будут у доменов и каким образом они будут взаимодействовать в совокупности. От этого будет зависеть задержка обращения в память и максимально допустимая частота памяти, ведь частота контроллера памяти может её ограничить. Итак, синхронизация подсистемы памяти влияет на её эффективность.
Для начала рассмотрим проблему метастабильности на примере триггеров. Что такое триггеры? Это защелки, которые синхронизируются на фронте или спаде тактового импульса. Много непонятных слов? О том, как работают защелки знать не обязательно. Достаточно понимать, что защелка может хранить один бит информации. Но синхронная защелка может записать бит информации только тогда, когда на одном из входов защелки есть тактовый импульс. Таким образом, тактовый импульс является своего рода сигналом, что данные с входа данных можно записать. А триггер отличается тем, что ему нужен не весь тактовый импульс, а только его фронт или спад.
В нашем случае триггеры будут синхронизироваться по фронтам, так что далее рассматривать будем только фронт, но помним, что для спада всё то же самое.
Для правильной работы триггера необходимо, чтобы входные данные триггера некоторое время оставались неизменны до фронта импульса. Этот временной интервал называется Time Setup (Ts). Аналогично после фронта импульса данные также некоторое время должны оставаться неизменными, и это временное требование называется Time Hold (Th).
Если требования для входных данных выполняются, то на выходе триггера данные также появляются. А иначе верное выходное значение триггера устанавливается через большее время. Такое состояние называется метастабильностью. В метастабильном состоянии сигнал пребывает в состоянии, которое нельзя назвать ни логическим нулём, ни логической единицей. Дальнейшее распространение метастабильного сигнала может привести к сбою всей системы.
Данная проблема характерна для передачи данных между доменами с разными частотами. Вы узнаете почему позже, а пока просто покажу частоты доменов подсистемы памяти в разных проектах.
Эльбрус-С+:
системный домен с частотой 500 МГц (системная частота);
домен оперативной памяти, частота которого относится к системной как 4/5, 2/3, 3/5 или 1/2;
домен ядра контроллера оперативной памяти, отношение его частоты к частоте памяти равно 1/2.
Один из КП А.С Кожина:
Системный домен (System domain) – 800/1000 МГц
Домен оперативной памяти (DDR domain) – 800, 666, 533, 400 МГц
Домен ядра контроллера (MC domain) – частота в 2 раза ниже частоты памяти
Домен оперативной памяти ровно в два раза меньше эффективной частоты оперативной памяти.
В двух случаях мы наблюдаем подсистему памяти, частотные домены которой имеют разные частоты (логично).
Возвращаемся к проблеме метастабильности. На рисунке (а) мы видим, что фронт CLKB захватывает нестабильный сигнал DA. Временной интервал между фронтами оказался недостаточным. В итоге мы имеем метастабильный сигнал DB.
Одними из решений данной проблемы является добавление ещё одного триггера. Совокупность триггеров на приемной стороне образует синхронизатор (рисунок б). Дополнительный триггер помог избавиться от дальнейшего распространения метастабильности сигналов, ведь DB2 принимает правильное значение. Однако не всегда такой синхронизатор решает проблему метастабильности. Например, здесь.
В первом случае CLKB не успевает захватить сигнал данных DA, а во втором случае CLKB захватывает DA три раза, то есть по сути одиночную посылку воспринимает, как множество посылок. В первом случае наблюдается передача из высокочастного домена в низкочастотный домен, а во втором — из низкочастотного в высокочастотный. Рассмотрим другой метод.
W_ADR соответствует значению Write Pointer, R_ADR соответствует значению Write Read.
Так как буфер асинхронный, то и write control logic, и read control logic функционируют на разных частотных доменах (имеют разные частоты).
Блок Flag Logic служит для формирования информационных сигналов о заполнении. Ниже представлена та же схема на более низком уровне.
Сначала указатель записи формируется в модуле в GRAYCOUNTER в коде Грея. Код Грея характерен тем, что в последовательности предыдущее значение от данного отличается только одним битом.
То есть в двоичной системе счисления будет так:
000
001 (отличается от предыдущего(000) одним битом)
010 (отличается от предыдущего(001) уже двумя битами в двух позициях)
011
100 (а здесь данное слово отличается всеми тремя битами от предыдущего)
101
110
111
Тогда как в коде Грея это будет выглядеть вот так:
000
001
011
010
110
111
101
100
Если мы возьмем любое значение, то опять же увидим, что оно отличается от предыдущего и от следующего только одним битом в какой-либо позиции. А зачем он нужен здесь вы узнаете совсем скоро. Далее из GRAYCOUNTER данные указателя отправляются в приемник через шину wrptr_g, а приемник работает на другой частоте. Здесь под шиной мы понимаем только совокупность проводников, по которым идет по биту информации. Но для исключения метастабильности на этом этапе к каждой линии шины подведен дополнительный триггер на передающей стороне, на рисунке он также изображен, и три триггера на принимающей стороне (на рисунке синхронизатор). Тогда возможно такое (при изменении указателя записи, то есть данных в GRAYCOUNTER), что сигналы на линиях шины будут задержаны относительно друг-друга, а это приведет к тому, что в одних линиях приемник захватит новые значения, а в других — старые. А в коде Грея новое значение отличается всего на один бит. У нас будет всего два варианта: либо старое (пусть будет 011), либо новое значение (пусть будет 010). А это к сбою работы FIFO-буфера не приведет. Далее gray2bin модуль сможет преобразовать код Грея в двоичное число. Также в любом FIFO-буфере с помощью сравнений указателей записи и чтения, узнается пуст ли или полон буфер. Верхняя граница известна, а при равенстве указателей мы понимаем, что буфер пуст. Ведь нельзя считать пустотой буфер или записать данные в переполненный, так что устанавливаются флаги из Flag Logic.
Асинхронные FIFO-буферы используются очень часто из-за того, что они могут передать данные доменов с очень разным соотношением частот. Да и вообще это очень удобно, ведь можно их заказывать готовые. Но, к сожалению, задержки будут гораздо больше: прохождение сигналов через триггеры, преобразование в код Грея и обратно — это довольно долго.
Ещё один интересный метод пересинхронизации я вычитал из статьи А.С Кожина, какую я укажу в источниках. Этот метод использовался в Эльбрус-C+, он предусматривает метки (сигналы) для высокочастотного домена. Причем для входа высокочастотного домена предусматривается метка clabel_i, служащая для того, чтобы высокочастотный домен не воспринимал одну посылку, как несколько (об этом было сказано, когда мы рассматривали синхронизаторы). Для выхода высокочастотного домена используется метка clabel_o, гарантирующая, что низкочастотный приемник примет данные (об этом тоже было сказано).
Здесь метка clabel_o разрешает изменение данных на выходе триггеров со стороны высокочастотного домена (обращайте внимание на data_out). На следующем фронте импульса приемника (приемник работает на частоте 2/5 Fsys), данные захватываются (это второй импульс 2/5 Fsys. Соотнесите его с data_out). Таким образом выполняется передача данных из высокочастотного домена в низкочастотный.
Здесь важно правильно формировать метки, чтобы соблюдались следующие требования: новые данные на data_out не должны захватываться предыдущим фронтом импульса (если бы первый импульс 2/5 Fsys захватил данные вместо второго), новые данные должны успеть переключиться до следующего фронта импульса (такое произошло, если бы второй импульс cabel_o появился позже).
Всё аналогично при передаче из низкочастотного домена в высокочастотный. Только в этому случае метка cabel_i обеспечивает выбор только одного фронта высокой частоты. Метки формируются в специальном блоке формирования меток.
Он состоит из регистра (такая память, состоящая из триггеров). Значение в регистре определяет, в какие такты периода биений (T align) разрешено выдавать метку. Период биений здесь, как вы можете посмотреть на предыдущем рисунке с меткой cabel_o — это период, при котором совпадают фронты импульсов. Ширина регистра определяется количеством тактовых импульсов за период биений (в Fsys было 5 таких). Основная метка выдается на частоте большего домена. Сигнал mode задает режим работы блоку формирования в зависимости от частот передающего и принимающего доменов. Указатель (Pointer) указывает на значение регистра, отвечающее за состояние метки (будет ли выдана или нет). Сигнал beat — это комбинационный сигнал биений, который определяет начало периода биений. Он помогает восстановить правильное значение указателя, если в нем изменился разряд.
Также синхронизация невозможна без самого блока пересинхронизации. Здесь всё стандартно, но всё-таки требуется раскрыть передачу из одного домена в другой, когда частоты доменов близки. Близкими частоты будут, если на низкочастотный импульс приходится один фронт высокочастотного домена или f1/f2 f2). Прием/передача могут быть невозможны из-за несоблюдения временнЫх интервалов. В этом случае используются триггеры, задерживающие на половину такта данные, и дополнительная метка, определяющая, когда задержанные данные можно использовать.
Подобный метод пересихронизации не так удобен и универсален, как асинхронный FIFO-буфер, но зато имеет меньшие задержки.
На этом всё. Спасибо за внимание, критикуйте, обсуждайте и задавайте вопросы.
Источники
Архитектура компьютера, 6-ое издание, Э. Танебаум и Т. Остин (Отсюда я взял про триггеры и прочее на цифровом логическом уровне, устройство памяти и шины)
Контроллер памяти DDR2 SDRAM и его система синхронизации в составе системы на кристалле «Эльбрус-S2», А. С. Кожин (по факту источник-пустышка, отсюда впервые услышал про метки, но взял только картинку с кп)
Метастабильность триггера и межтактовая синхронизация, «nerudo» (статья с хабра. Взял отсюда картинку, где Ts и Th интервалы)
Одно- и двухпортовая память. FIFO-буфер. Проблемы метастабильности, юутб-канал «Электроника и наноэлектроника» (типо лекция, мне показалась она достаточно сомнительной, но разобраться действительно помогла)
Что такое кэш процессора, и как он работает, Сергей Пахомов (здесь было про промежуточную память)
Флэш-память на любой вкус, Сергей Пахомов (про регенерацию памяти на уровне конденсаторов)