КЭШ и сильносвязанная память

Процессорная система Nios II может содержать кэш команд и данных, которые реализуются с помощью блоков встроенной памяти в FPGA. Параметры КЭШ памяти определяются во время создания системы, путем заполнения соответствующей вкладки (см. раздел 1.5.2). Добавление этой памяти значительно повышает производительность процессорной системы, особенно если в качестве основной памяти используется внешняя SDRAM память. КЭШ инструкций и данных является КЭШем прямого отображения.

КЭШ память инструкций может быть использована в стандартной и быстрой версиях процессора. При этом она организуется по 8 слов в одной строке, а ее размер определяется пользователем во время создания системы.

КЭШ память данных может быть реализована только в быстрой версии процессора Nios II/f. Она может быть организована по 4, 16 или 32 байта в одной строке. Общий размер также определяется пользователем при генерации системы.

Управление КЭШем осуществляется программным путем. Для этих целей в процессоре Nios II используются инструкции представленные в разделе 4.5.10.

Процессор Nios II использует КЭШ память стандартным образом. Однако существует два способа обхода КЭШа. Одним из них является использование специальных версий инструкций загрузки/сохранения, таких как ldwio,ldbio, lduio, ldhio, ldhuio, stwio, stbio и sthio. Вторым способом является использование старшего (31 бита) адреса в качестве тега, который указывает должен ли процессор Nios II загружать или считывать данные с использованием КЭШа или без него. Если данный бит, равен 1, то считывание или загрузка данных происходит в обход механизма кэширования. Данная возможность доступна только для быстрой версии процессора.

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

Сильносвязанная память (Tightly Coupled Memory) представляет собой память, реализованную внутри кристалла FPGA и подключенная к процессору напрямую без использования шины Avalon. В этой памяти могут храниться как инструкции, так и данные. Доступ к этой памяти осуществляется всегда в обход КЭШ памяти. Настройка параметров этой памяти, также как и КЭШ памяти осуществляются во время проектирования процессорной системы в SOPC Builder.

Список литературы

1. Шагурин И.И. Системы на кристалле – особенности реализации и перспективы применения. Электронные компоненты, 2009 г.

2. Грушвицкий Р.И., Мурсаев А.X. Угрюмов Е.П. Проектирование систем на микросхемах с программируемой структурой. 2-е изд., перераб. и доп. СПб.: БХВ-Петербург, 2006. - 736с.

3. Сайт компании Altera. Интернет ресурс.

http://www.altera.com/

4. DE2-70 Development and Education Board. Интернет ресурс.

http://www.altera.com/education/univ/materials/boards/de2-70/unv-de2-70-board.html?GSA_pos=1&WT.oss_r=1&WT.oss=de-270

5. Ефремов Н.В. Введение в систему автоматизированного проектирования Quartus II. Учебное пособие. – М.: ГОУ ВПО МГУЛ, 2011.-147с.

6. SOPC Builder User Guide. Интернет ресурс.

http://www.altera.com/literature/ug/ug_sopc_builder.pdf

7. Making SOPC Builder Components. Интернет ресурс. ftp://ftp.altera.com/up/pub/Altera_Material/11.0/Tutorials/making_sopc_builder_components.pdf

8. Avalon Interface Specification. Интернет ресурс.

http://www.altera.com/literature/manual/mnl_avalon_spec.pdf

9.Altera Monitor Program. Интернет ресурс.

ftp://ftp.altera.com/up/pub/Altera_Material/11.0/Tutorials/Altera_Monitor_Program.pdf

10. Altera University Program. Интернет ресурс.

http://www.altera.com/education/univ/unv-index.html

11. Процессорная система «DE2-70 Media Computer». Интернет ресурс.

ftp://ftp.altera.com/up/pub/Altera_Material/11.0/Examples/DE2-70/NiosII_Computer_Systems/DE2-70_Media_Computer.pdf

12. Процессор Nios II. Интернет ресурс.

http://www.altera.com/devices/processor/nios2/ni2-index.html

13. Nios II Processor Reference Handbook. Интернет ресурс. http://www.altera.com/literature/hb/nios2/n2cpu_nii5v1.pdf

14. Введение в процессор NIOS II. Интернет ресурс.

ftp://ftp.altera.com/up/pub/Altera_Material/11.0/Tutorials/Nios2_ introduction.pdf

Приложение

Описание параметров вкладок.

Параметры внутрикристальной памяти, рис. 1.27:

· Type – тип внутрикристальной памяти (RAM/ROM);

· Dual Port-Access – включение поддержки двухпортового доступа;

· Single Clock operation – в случае включения поддержки двухпортового доступа, данная опция становится активна, она включает поддержку выполнения операций чтения/записи за один такт;

· Read During Write Mode – в случае поддержки двухпортового доступа, данная опция определяет, какие данные выдавать при чтении ячейки в которую производят запись в данный момент по другому порту (Don’t Care – любые данные, OLD DATA – выдавать старые данные);

· Block type – определение на основе каких элементов FPGA будет строиться данная память (Auto автоматическое определение, M9K строить память на основе встроенной памяти FPGA);

· Data Width – определение ширины данных;

· Total Memory Size – общий объем памяти;

· Minimize memory block usage – минимизация использования блоков памяти, эта опция становится активной для определенных моделей FPGA;

· Slave s1 latency – определение задержки для операций чтения для порта s1 (1,2 такта);

· Slave s2 latency – определение задержки для операций чтения порта s2, в случае двухпортового режима;

· Initialize memory content – включение инициализации содержимого памяти с помощью файла инициализации;

· Enable non-default initialization file – подключение не создаваемого по умолчанию файла инициализации памяти (если не выбирать данную опцию, будет создан пустой файл инициализации, имя которого, будет такое же, как у данного IP ядра);

· Enable In-System Memory Content Editor Feature – включение поддержки динамического изменения содержимого памяти, с помощью средств отладки In-System Memory Content Editor.

Параметры вкладки Core Nios II, рис. 1.29:

· Hardware Multiply – параметр определяет на основе каких элементов FPGA будет реализовано умножение (на основе логических элементов, встроенных умножителей, либо умножение не будет реализовано вообще).

· Hardware Divide – опция, использование которой подключает аппаратную реализацию деления в процессоре.

· Reset Vector – здесь указывается память и смещение от ее начала, куда будет передаваться управление после сброса процессорной системы;

· Exception Vector – – параметры, определяющие память и смещение от её начала, куда будет передаваться управление в случае возникновения прерываний, исключений и ловушек.

· Include MMU – включение модуля управления памятью.

· Fast TLB Miss Exception Vector – здесь указывается память и смещение, куда следует передавать управление в случае TLB промаха;

· Include MPU – включение модуля защиты памяти.

Параметры вкладки Cache and Memory Interfaces, рис. 1.30:

· Instruction Cache – размер КЭШа инструкций;

· Enable Burst – включение режима burst для кэш памяти;

· Include tightly coupled instruction master port(s) – включение портов для подключения сильно связанной памяти с инструкциями;

· Number of ports – определяет количество портов для памяти со сильно связными инструкциями или данными;

· Data Cache – определяет размер КЭШа данных;

· Data Cache Line Size – параметр определяющий размер строки КЭШ памяти;

· Include tightly coupled data master port(s) – включение портов для подключения сильно связанной памяти с данными.

Параметры вкладки Advanced Features, рис. 1.31:

· Interrupt Controller – параметр определяющий тип контроллера прерываний (внутренний или внешний);

· Number of shadow register set – количество наборов теневых регистров;

· Include cpu_resetrequest and cpu_resettaken_signals – подключение к процессору сигналов запроса сброса и сброс обработан;

· Assign cupid control register value manually – назначить идентификатор процессорной системы вручную;

· Illegal instruction (always present with MMU and MPU) – включение проверки исключений на неправильные инструкции;

· Division error – включение исключений при ошибке деления;

· Misaligned memory access – включение исключений при доступе к памяти по невыровненным адресам;

· Extra exception information – включение дополнительной информации об исключениях;

Параметры вкладки MMU and MPU settings, рис. 1.32:

· Process ID (PID) bits – этот параметр определяет количество бит, отводимых под идентификатор процесса;

· Optimize Number of TLB Entries Based On Device Family (256 Entries) – данная опция включает оптимизацию количества записей TLB в зависимости от семейства FPGA;

· TLB Entries – параметр определяющий количество TLB записей. Он активен в случае, если отключена опция оптимизации количества записей TLB;

· TLB Set-Associativity – параметр определяющий количество линий модульно-ассоциативного TLB;

· Micro DTLB Entries – количество DTLB микро записей;

· Micro ITLB Entries – количество ITLB микро записей;

· Use Limit for Region Range – включение ограничений на диапазон областей памяти;

· Number of Data Regions – количество областей с данными;

· Number of Instruction Regions – количество областей с командами;

· Minimum Data Region Size – минимальный размер одной области с данными;

· Minimum Instruction Region Size – параметр определяющий минимальный размер области с командами.

Параметры вкладки JTAG Debug Module, рис. 1.33:

· Select a debugging mode – определяет один из 5 уровней отладки. По мере увеличения уровня, увеличиваются возможности отладки и требуемые для этого ресурсы кристалла. На уровне No debugger в процессоре будет отсутствовать модуль отладки, не будет возможности загружать программы в процессорную систему и проводить их отладку. Максимальным уровнем отладки является Level 4. У пользователя появляется возможность загружать программы, проводить отладку загруженных программ, включать аппаратные точки останова и точки контроля данных. Кроме того, появляется возможность осуществлять трассировку программы и наблюдать за доступом к данным, причем размещенных как внутри кристалла, так и вне его;

· Include debugreq and debugack signals – данный параметр добавляет в процессор сигналы запроса отладки и сигналы подтверждения отладки;

· Break Vector – в этих полях указывается, память и смещение, куда передавать управление в случае достижения точек останова;

· OCI Onchip Trace – определяет количество кадров, которые необходимо хранить при внутрикристальной трассировке;

· Automatically generate internal 2X clock signal – опция включает автоматическую генерацию синхросигналов с двойной частотой.

Параметры вкладки Custom Instruction, рис. 1.34:

· В левом списке отражаются дополнительные инструкции, которые могут быть подключены к процессору;

· В правом списке отображаются подключенные инструкции. Здесь представлены следующие поля: имя, количество тактов необходимых для выполнения инструкции, количество портов и код операции;

· Кнопка “Add” подключает инструкции из левого списка;

· Кнопка “Import” позволяет импортировать новые дополнительные инструкции, в том числе созданные пользователем;

· Кнопка “Remove” удаляет инструкцию из процессора;

· Кнопка “Edit” позволяет изменить параметры дополнительной инструкции;

· Кнопки “Move Up” / “Move Down” позволяют менять порядок дополнительных инструкций в списке.

Для настройки параллельных портов ввода/вывода (PIO) указываются следующие параметры, рис. 1.37:

· Width (1-32 bits) – параметр, определяющий ширину данных;

· Direction – здесь указывается тип параллельного порта, двунаправленный с третьим состоянием, входной, входной и выходной с раздельными однонаправленными шинами и выходной;

· Output Port Reset Value – здесь указывается значение, которое будет возникать после сигнала сброса, при настройке параллельного порта как выходного;

· Enable individual bit setting/clearing – включение данного параметра позволяет побитно устанавливать и сбрасывать значения для выходного порта;

· Synchronously capture – данный параметр включает регистры захвата фронта для входного порта;

· Edge Type – здесь определяется тип фронта, который будет детектироваться регистрами фронта (восходящий, нисходящий и любой);

· Enable bit-clearing for edge capture register – включение параметра, позволяющего побитно очищать регистр фронта;

· Generate IRQ – данная опция включает генерацию сигналов прерывания для входного порта;

· IRQ Type – определяет условие по которому будет генерироваться прерывания;

· Hardwire PIO inputs in test bench – данный параметр включает инициализацию входных портов определенным пользователем значением при проведении тестов.

Учебное издание

Н.В. Ефремов, А.А. Бородин


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: