Класс tSimpleMemBlock для эмуляции блока памяти — КиберПедия 

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Класс tSimpleMemBlock для эмуляции блока памяти

2022-09-12 25
Класс tSimpleMemBlock для эмуляции блока памяти 0.00 из 5.00 0 оценок
Заказать работу

tSimpleMemBlock это класс для эмуляции блока памяти. Класс эмулирует работу блока памяти заданной длинны. С помощью класса tSimpleMemBlock возможно создавать блоки памяти произвольной длинны без привязки к объему физической памяти машины, на которой происходит эмуляция. Это обеспечивается следующими инструментами:

1) физическая память под блок выделяется сегментами по 64 килобайт по мере появления запроса на чтение или на запись в память. Таким образом, для эмуляции выделяется только та память, к которой обращается программа на микроконтроллере;

2) каждый сегмент имеет свой счетчик обращений. При каждом обращении к сегменту значение счетчика инкрементируется;

3) если системная функция выделения памяти возвращает исключительную ситуацию, т. е. ситуацию, когда память не может быть выделена, то сегмент физической памяти «отбирается» у другого сегмента, к которому было минимальное количество обращений. При этом содержимое блока сохраняется в своп-файл;

4) как только происходит обращение к сегменту, содержимое которого лежит в своп-файле, для этого сегмента запускается функция выделения памяти, как это описано в п. 3. После того, как память выделена, данные загружаются из своп-файла.

 

Класс-шаблон tSimpleMemBlock имеет три параметра:

1) vAddrType – тип шины адреса;

2) vDataType – тип шины данных;

3) vCellType – тип минимально адресуемой ячейки.

 

Класс tSimpleMemBlock реализует интерфейс iMemInterface. При операциях обращения к памяти через интерфейс iMemInterface осуществляется чтение или запись (в зависимости от типа обращения) из\в массива памяти, выделенной внутри данного блока.

Реализация функции SetMemLock

Функция SetMemLock возвращает номер такта, после которого записываемые или читаемые данные будут доступны.

 

Расчет номера такта осуществляется по следующему алгоритму:

1) записать в переменную cur_time максимальная из двух значений: текущего время (текущий такт эмуляции) и время (номер такта) окончания последней операции обращения к памяти;

2) рассчитать номер такта как cur_time + delay, где delay – длительность задержки обращения непосредственно к блоку памяти;

3) сохранить рассчитанный на шаге 2 номер такта как время последнего обращения к памяти;

4) функция возвращает значение, рассчитанное на шаге 2.

 

TDDramBlock – эмуляция памяти DDRAM

Класс TDDramBlock эмулирует работу памяти DDRAM. Класс TDDramBlock унаследован от tSimpleBlock и отличается от tSimpleBlock только конструктором, реализацией функции SetMemLock и набором дополнительных член-данных, инициализируемых в конструкторе.

 

Особенности реализации функции SetMemLock

В отличии от tSimpleMemBlock при расчете задержки памяти DDRAM необходимо учитывать следующие аспекты:

1) тактовая частота DDRAM может отличатся от частоты ядра в N раз, причем в общем случае N – не целое;

2) память DDRAM разделена на страницы фиксированного размера. При обращение к разным страницам памяти необходимо учитывать время на открытие страницы и закрытие страницы, к которой ранее было обращение;

3) память DDRAM нуждается в процедуре регенерации. С точки зрения расчета времени обращения к памяти процедуру регенерации можно представить, как регулярную (каждые M тактов) задержку на K тактов – время регенерации.

Исходя из вышесказанного, алгоритм расчета задержки для памяти DDRAM состоит из следующих шагов:

1) запросить номер текущего такта процессора;

2) пересчитать номер такта ядра в номер такта памяти;

3) вычислить new_time_offset - значение времени начала обращения к памяти DDRAM. Значение new_time_offset вычисляется как максимум из значений текущего такта памяти и такта, на котором закончилась последняя операция обращения к DDRAM;

4) если осуществляется первое обращение с момента старта эмуляции или если адреса предыдущего и текущего обращений к памяти располагаются в разных страницах, то к new_time_offset прибавить время открытия и закрытия страницы памяти;

5) если наступило время очередной регенерации памяти, то к new_time_offset прибавить время регенерации;

6) функция возвращает значение new_time_offset.

Интерфейс с отладчиком

Интерфейс симулятора можно условно разделить на две части:

- функции создания и уничтожения эмулятора;

- интерфейсный класс TDbgInterface.


Поделиться с друзьями:

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

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

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.008 с.