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

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

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

2022-09-12 52
Класс 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.


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

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

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

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

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...



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

0.01 с.