Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Топ:
Оснащения врачебно-сестринской бригады.
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
История развития методов оптимизации: теорема Куна-Таккера, метод Лагранжа, роль выпуклости в оптимизации...
Интересное:
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Дисциплины:
2022-09-12 | 29 |
5.00
из
|
Заказать работу |
|
|
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 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!