Abstrak— In this module III experiment with the Praktikan dapat membuat instruction
synthesizable title MPIS32 ® microprocessor part I: memory, data memory dan register dari
Instruction set, register, MIPS32® dalam kode VHDL yang
and memory. As for this experiment, four experiments synthesizable dan dapat disimulasikan
will be conducted relating to the design dengan Altera® Quartus® II v9.1sp2.
microprocessor ® MPIS32 component. The software
used to support the smooth running of this experiment
is Altera Quartus. The main objective of this
experiment is to understand architecture
microprocessor ®MPIS32, understands the instruction Adapun peralatan yang mendukung praktikum ketiga
set from ®MPIS32 and is able to use in Assembly ini, adalah sebagai berikut ini :
Language Simple program, able to simulate the
®MPIS32 program in spim simulation, able to make Komputer Desktop / Laptop dengan sistem
instruction sets, data operasi Microsoft® Windows™ 7/8/8.1.
Memory and registers from ®MPIS32 are made to
VHDL code, where the results will be simulated with Altera® Quartus® II v9.1sp2 Web Edition
Altera. atau Altera® Quartus® II v9.1sp2
Subscription Edition. (Altera® Quartus® II
Keywords: VHDL, MPIS32, register, instruction v10 atau yang lebih baru juga dapat
memory, data memory. digunakan, namun tidak terdapat simulator.
Praktikan harus menggunakan Mentor
Graphics® ModelSim® untuk melakukan
I. PENDAHULUAN simulasi).
Adapun yang menjadi tujuan dilakukannya percobaan PCSpim sebagai simulator MIPS32® (untuk
ketiga ini adalah sebagai berikut ini : Microsoft® Windows™ 8/8.1, diperlukan
mengunduh dan memasang Microsoft® .Net
Praktikan memahami arsitektur Framework 3.5 terlebih dahulu).
mikroprosesor MIPS32® beserta datapath
eksekusinya. Notepad++ sebagai teks editor.
C. Mikroprosesor MIPS32®
MIPS32® (Microprocessor without Interlocked Terdapat lima tahap yang dilakukan ketika
Pipeline Stages) merupakan sebuah mikroprosesor 32- mikroprosesor MIPS32® melakukan eksekusi suatu
bit yang dikembangkan oleh MIPS Technologies. instruksi. Kelima tahap tersebut adalah sebagai
Mikroprosesor ini merupakan reduced instruction set berikut.
computer (R ISC). Mikroprosesor ini sering digunakan
sebagai bahan pembelajaran mata kuliah Arsitektur Instruction Fetch (IF) Tahap instruction fetch
Sistem Komputer diberbagai universitas dan sekolah berfungsi mengatur aliran instruksi yang
teknik. akan diolah pada tahap berikutnya. Instruksi
yang sedang dijalankan merupakan instruksi
Dalam kehidupan nyata, arsitektur mikroprosesor yang berasal dan disimpan dari memory. Pada
MIPS® sering digunakan dalam sistem embedded arsitektur ini, memory dipisahkan menjadi
seperti perangkat Windows™ CE, router,residential dua bagian yaitu instruction memory yang
gateway, dan konsol video game seperti Sony® berfungsi menyimpan instruksi-instruksi
PlayStation®, Sony® PlayStation® 2 (PS2™), dan yang akan dieksekusi dan data memory yang
Sony® PlayStation® Portable (PSP®). berfungsi untuk menyimpan data untuk
menghindari structural hazard. Dengan
demikian, arsitektur ini menganut Harvard
Architecture.
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
LIBRARY altera_mf;
USE altera_mf.altera_mf_components.ALL;
clock : IN std_logic;
reset : IN std_logic;
INSTR : OUT std_logic_vector (31
A. Tugas 1 : Perancangan Instruction DOWNTO 0)
);
Memory END ENTITY;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY altera_mf;
USE altera_mf.all; Dari hasil simulasi diatas dapat dilihat bahwa
hasil dari ADDR dan INSTRnya sesuai dengan yang
ENTITY instruction_memory IS PORT (
ADDR : IN STD_LOGIC_VECTOR (15 dibuat di codingan. Dapat dilihat juga bahwa pada
DOWNTO 0); percobaan 1 dan 2 instruction memory bekerja dengan
clock : IN STD_LOGIC := '1';
baik secara fungsional. Sebelum dilakukan perubahan
INSTR : OUT STD_LOGIC_VECTOR (31 lebar address untuk input (ADDR dan address_a) serta
DOWNTO 0)
);
widthad_a, desain yang dibuat tidak dapat disintesis
END ENTITY; dikarenakan tidak mencukupinya FPGA yang
digunakan untuk merealisasikan elemen memory.
ARCHITECTURE structural OF instruction_memory IS
SIGNAL sub_wire0 : STD_LOGIC_VECTOR (31 Kemudain dilakukanlah perubahan, sehingga setelah
DOWNTO 0); dilakukan perubahan maka diperoleh hasil sinyal
COMPONENT altsyncram
GENERIC seperti diatas.
(
init_file : STRING; Berikutnya setelah dilakukannya simulasi
operation_mode : STRING;
widthad_a :
functional maka kemudian dilakukan simulasi timing,
NATURAL; adapun hasil dari simulasi timing dapat dilihat pada
width_a :
NATURAL
gambar dibawah ini :
);
PORT
(
clock0 : IN
STD_LOGIC;
address_a : IN
STD_LOGIC_VECTOR (15 DOWNTO 0);
q_a : OUT
STD_LOGIC_VECTOR (31 DOWNTO 0)
);
END COMPONENT;
BEGIN
INSTR <= sub_wire0;
altsyncram_component : altsyncram Dari hasil gambar diatas diperlukan waktu 5 ns
GENERIC MAP untuk output mencapai titik stabil dan frekuensi 200
(
init_file => "imemory.mif", MHz. Apabila dibandingkan hasil simulasi timing dari
operation_mode => "ROM", percobaan 1 dan percobaan 2 maka akan terlihat
widthad_a => 16,
width_a => 32 bahwa percobaan 1 lebih cepat 3ns untuk output
) mencapai titik stabil dan memiliki 133MHz lebih
besar dibanding percobaan 2. Perlu dilakukan memiliki port input untuk memasukkan data yang
penyesuaian nilai alamat yang dimasukkan yaitu 16 bit akan ditulis dengan lebar data 32-bit. Terdapat pula
sedangkan RAM yang digunakan 32 bit. Namun port input clock untuk mengendalikan rangkaian ini,
karena dalam implementasinya hanya digunakan 32 port input untuk mengaktifkan mode tulis (write
alamat dari 216 alamat yang tersedia. Pada percobaan enable), dan port
ini untuk mengganti nilai dari intruction digunakan input untuk mengaktifkan mode baca (read enable).
kodingan seperti di bawah dan kemudian file disimpan Karena desain yang mirip dengan desain instruction
dengan nama imemory.mif. memory, akan dimanfaatkan kembali Altera®
MegaFunction ALTSYNCRAM untuk merealisasikan
rangkaian ini. Berikut ini merupakan langkah langkah
yang dilakukan pada percobaan ketiga ini :
ENTITY reg_file IS
Berikutnya setelah dilakukannya simulasi
PORT( functional maka kemudian dilakukan simulasi timing,
clock1 : IN STD_LOGIC; --
clock
adapun hasil dari simulasi timing dapat dilihat pada
WR_EN : IN STD_LOGIC; - gambar dibawah ini :
- write enable
ADDR_1 : IN
STD_LOGIC_VECTOR (4 DOWNTO 0); -- Input 1
ADDR_2 : IN
STD_LOGIC_VECTOR (4 DOWNTO 0); -- Input 2
ADDR_3 : IN
STD_LOGIC_VECTOR (4 DOWNTO 0); -- Input 3
WR_Data_3 : IN
STD_LOGIC_VECTOR (31 DOWNTO 0);-- write data
RD_Data_1 : OUT
STD_LOGIC_VECTOR(31 DOWNTO 0);-- read data 1
RD_Data_2 : OUT
STD_LOGIC_VECTOR(31 DOWNTO 0) -- read data 2
);
END ENTITY ;
Apabila gambar diatas diperhatikan maka terlihat
ARCHITECTURE behavior OF reg_file IS perbedaan pada simulasi timing dimana terdapat delay
TYPE ramtype IS ARRAY (31 DOWNTO 0) OF
std_logic_vector (31 DOWNTO 0); sekitar 1,5 sampai 2 perioda input. Hal ini
SIGNAL mem: ramtype; kemungkinan terjadi karena adanya sintesa rangkaian
yang masih kurang efsien. Namun jika dilihat dari
BEGIN hasil simulasi timing diatas, terlihar bahwa output
PROCESS(ADDR_1,ADDR_2,ADDR_3,clock1,WR_EN,me
m) yang diperoleh menghasilkan urutan dan nilai yang
BEGIN sama seperti pada simulasi functional.
IF (((clock1 = '1') AND (clock1'EVENT)) AND
(WR_EN = '1')) THEN
mem(conv_integer(ADDR_3)) <=
WR_Data_3;
END IF;
IF ((clock1 = '0') AND (clock1'EVENT)) THEN
RD_Data_1 <=
mem(conv_integer(ADDR_1));
RD_Data_2 <=
mem(conv_integer(ADDR_2));
END IF;
END PROCESS;
END behavior ;
Altera® MegaFunction ALTSYNCRAM
memiliki sebuah template berfungsi untuk
ANALISIS DARI PERTANYAAN merealisasikan synchronous RAM dan ROM dalam
desain rangkaian yang akan dibuat. Sehingga
keuntungannnya kita tidak perlu lagi mendefinisikan
Pada microprosesor MIPS32® terdapat 5 tahapan
fungsi yang ada pada template tersebut dan dapat
eksekusi instruksi, yaitu Instruction Fetch (untuk
meminimalkan code program VHDL yang dibuat
mengatur aliran instruksi yang akan diolah pada tahap
serta lebih efisien.
berikutnya), Instruction Decode (instruksi dengan
lebar 32-bit akan dipecah sesuai format instruksi yang Proses pembacaan data pada register dibuat terjadi
digunakan), Execute (tahap dimana sebagian besar saat falling edge clock sedangkan penulisan data pada
operasi aritmatika dan logika pada arithmetic and logic register dibuat berlangsung pada saat rising edge
unit / ALU dilakukan), Data memory / MEM clock. Hal ini agar tidak terjadi proses pembacaan dan
(penyimpanan dan/atau pengambilan data dari data penulisan data pada waktu yang sama.
memory), serta Write back (mengalirkan data dari data
memory atau hasil perhitungan ALU ke register untuk Modifikasi pada lebar data dan lebar address pada
dapat menjalankan instruksi selanjutnya).\ desain yang dibuat perlu dilakukan mengingat tidak
mencukupunya FPGA yang digunakan untuk
Perbedaan mikroprosessor MIPS32® dengan merealisasikan elemen memory. Solusi lain yang
mikroprosessor Single-Cycle MIPS32® yang dapat dilakukan yaitu dengan mengganti FPGA
digunakan pada praktikum ini yaitu pada dengan kapasistas penyimpana memory yang lebih
mikroprosessor MIPS32® tidak terdapat pipeline dan besar.
semua instruksi selesai dieksekusi dalam satu siklus
clock. Karena pada setiap eksekusi pada Hasil simulasi functional dan timing setiap
microprosessor dibutuhkan adanya nilai 0 yang akan komponen yang telah direalisasikan telah
sering dipanggil (sebagai initialization) maka bekerja/berjalan dengan baik. Hal tersbut dibuktikan
dibuatlah suatu register tersendiri yang memiliki nilai dengan hasil output yang diperoleh telah sesuai
konstan nol (yaitu register 0). dengan code VHDL yang dibuat.
Decode pada ketiga format dasar instruksi (R,I, dan Simulasi functional dan timing pada instruction
J) adalah sebagai berikut : memory, data memory dan register menghasilkan
waveform yang telah sesuai dengan address yang
Program Counter (PC) merupakan bagian dimasukan (namun pada simulasi timing terdapat
dari mikroprosessor yang menyimpan address sedikit delay).
instruksi yang akan dieksekusi. Untuk memulai
eksekusi, kita perlu melakukan pengesetan nilai
program counter menjadi suatu nilai tertentu (sesuai
kebutuhan).
A. TUGAS 1 B. TUGAS 2
-- Praktikum EL3111 Arsitektur Sistem -- Praktikum EL3111 Arsitektur Sistem Komputer
Komputer -- Modul :3
-- Modul :3 -- Percobaan :2
-- Percobaan :1 -- Tanggal : 25
-- Tanggal : 25 Oktober Oktober 2018
2018 -- Kelompok :-
-- Kelompok :- -- Rombongan :-
-- Rombongan :- -- Nama (NIM) 1 : erikson mangihut tua
-- Nama (NIM) 1 : erikson silaban(14S16028)
mangihut tua -- Nama File :
silaban(14S16028) instruction_memory.vhd
-- Nama File : -- Deskripsi : Implementasikan
instrucMEM.vhd desain instruction memory
-- Deskripsi : Implementasi
instruction LIBRARY ieee;
memory USE ieee.std_logic_1164.all;
LIBRARY altera_mf;
LIBRARY IEEE; USE altera_mf.all;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY instruction_memory IS PORT (
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ADDR : IN STD_LOGIC_VECTOR (15
LIBRARY altera_mf; DOWNTO 0);
USE altera_mf.altera_mf_components.ALL; clock : IN STD_LOGIC := '1';
BEGIN
PROCESS(ADDR_1,ADDR_2,ADDR_3,clock1,W
R_EN,mem)
BEGIN
IF (((clock1 = '1') AND
(clock1'EVENT)) AND (WR_EN = '1')) THEN
mem(conv_integer(ADDR_3)) <=
WR_Data_3;
END IF;
IF ((clock1 = '0') AND
(clock1'EVENT)) THEN
RD_Data_1 <=
mem(conv_integer(ADDR_1));
RD_Data_2 <=
mem(conv_integer(ADDR_2));
END IF;
END PROCESS;
END behavior ;