DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Звіт з лабораторної роботи № 6 з дисципліни: “Комп’ютерні системи” - Дослідження програмної моделі блоку fetch з моделі RISC CPU

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних технологій, автоматики та метрології
Факультет:
Комп’ютерні науки
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2012
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Комп’ютерні системи
Група:
КН-1
Коротко про документ

Про що ця робота

У роботі досліджено програмну модель блоку fetch у складі моделі RISC CPU за допомогою мови SystemC. Побудовано структурну схему блоку та проаналізовано його роботу.

У роботі розглядаються

  • Комп'ютерні системи
  • Архітектура RISC CPU
  • Мова SystemC
  • Блок Fetch
  • Програмне моделювання

Зміст і розділи

  1. Мета роботи
  2. Порядок виконання роботи
  3. Хід виконання роботи
  4. Висновок
Для кого:Студенти технічних спеціальностей та викладачі комп'ютерних систем
Викладачі:Викладач кафедри ЕОМ

Ключові поняття

SystemCRISC CPUFetchinstruction fetch unitструктурна схемапрограмна модельлабораторна робота

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ „ЛЬВІВСЬКА ПОЛІТЕХНІКА” ІКТАМ Кафедра ЕОМ Звіт з лабораторної роботи № 6 з дисципліни: “Комп’ютерні системи” Львів – 2012 Дослідження програмної моделі блоку Fetch з моделі RISC CPU Мета роботи: Дослідити програмну модель блоку Fetch, яка входить до складу програмної моделі RISK CPU, створеної на мові SystemC. Побудувати структурну схему блоку Fetch. Порядок виконання роботи Дослідити програмну модель блоку FETCH, який входить до складу моделі процесора з архітектурою RISC. На основі моделі, що досліджується, побудувати структурну схему блоку FETCH. Дати пояснення функцій, що виконуються елементами схеми. Хід виконання роботи: Програмна модель блоку Instruction Fetch Unit (Fetch): #include <iostream.h> #include "systemc.h" #include "fetch.h" #include "directive.h" void fetch::entry() { unsigned addr_tmp=0; unsigned datao_tmp=0; unsigned datai_tmp=0; unsigned lock_tmp = 0; addr_tmp = 1; datao_tmp = 0xdeadbeef; // Now booting from default values reset.write(true); ram_cs.write(true); ram_we.write(false); address.write(addr_tmp); wait(memory_latency); // For data to appear wait_until((bios_valid.delayed() == true) || (icache_valid.delayed() == true)); if (stall_fetch.read() == true) { datai_tmp = 0; } else { datai_tmp = ramdata.read(); } cout.setf(ios::hex,ios::basefield); cout << "-----------------------" << endl; cout << "IFU :" << " mem=0x" << datai_tmp << endl; cout << "IFU : pc= " << addr_tmp ; cout.setf(ios::dec,ios::basefield); cout << " at CSIM " << sc_time_stamp() << endl; cout << "-----------------------" << endl; instruction_valid.write(true); instruction.write(datai_tmp); program_counter.write(addr_tmp); ram_cs.write(false); wait(); instruction_valid.write(false); addr_tmp++; wait(); while (true) { if (addr_tmp == 5) { reset.write(false); } if (interrupt.read() == true) { ram_cs.write(true); addr_tmp = int_vectno.read(); ram_we.write(false); wait(memory_latency); datai_tmp = ramdata.read(); printf("IF ALERT: **INTERRUPT**\n"); cout.setf(ios::hex,ios::basefield); cout << "------------------------" << endl; cout << "IFU :" << " mem=0x" << datai_tmp << endl; cout << "IFU : pc= " << addr_tmp ; cout.setf(ios::dec,ios::basefield); cout << " at CSIM " << sc_time_stamp() << endl; cout << "------------------------" << endl; instruction_valid.write(true); instruction.write(datai_tmp); ram_cs.write(false); interrupt_ack.write(true); if (next_pc.read() == true) { addr_tmp++; } wait(); instruction_valid.write(false); interrupt_ack.write(false); wait(); } if (branch_valid.read() == true) { printf("IFU ALERT: **BRANCH**\n"); lock_tmp ++; ram_cs.write(true); addr_tmp = branch_address.read(); ram_we.write(false); wait(memory_latency); wait_until((bios_valid.delayed() == true) || (icache_valid.delayed() == true)); datai_tmp = ramdata.read(); cout.setf(ios::hex,ios::basefield); cout << "------------------------" << endl; cout << "IFU :" << " mem=0x" << datai_tmp << endl; cout << "IFU : pc= " << addr_tmp ; cout.setf(ios::dec,ios::basefield); cout << " at CSIM " << sc_time_stamp() << endl; cout << "------------------------" << endl; instruction_valid.write(true); instruction.write(datai_tmp); ram_cs.write(false); if (next_pc.read() == true) { addr_tmp++; } wait(); instruction_valid.write(false); wait(); } else { lock_tmp = 0; ram_cs.write(true); address.write(addr_tmp); ram_we.write(false); wait(memory_latency); // For data to appear wait_until((bios_valid.delayed() == true) || (icache_valid.delayed() == true)); datai_tmp = ramdata.read(); cout.setf(ios::hex,ios::basefield); cout << "------------------------" << endl; cout << "IFU :" << " mem=0x" << datai_tmp << endl; cout << "IFU : pc= " << addr_tmp ; cout.setf(ios::dec,ios::basefield); cout << " at CSIM " << sc_time_stamp() << endl; cout << "------------------------" << endl; instruction_valid.write(true); instruction.write(datai_tmp); program_counter.write(addr_tmp); branch_clear.write(false); ram_cs.write(false); if (next_pc.read() == true) { addr_tmp++; } wait(); instruction_valid.write(false); wait(); } if (lock_tmp == 1) { branch_clear.write(true); wait(); } /* Unless you wanted to write to your instruction cache. Usually Instruction cache is read only. // Write memory location first chip_select.write(true); write_enable.write(true); address.write(addr); instruction_write.write(datao); printf("fetch: Data Written = %x at address %x\n", datao, addr); wait(memory_latency); // To make all the outputs appear at the interface // some process functionality not shown here during which chip // chip select is deasserted and bus is tristated chip_select.write(false); instruction_write.write(0); wait(); */ } } // end of entry function Блок-схему IF:  Висновок: На цій лабораторній роботі я дослідив програмну модель блоку Fetch, яка входить до складу програмної моделі RISС CPU, створеної на мові SystemC та побудував структурну схему блоку Fetch.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!