RISC V adalah arsitektur set Instruksi yang dikembangkan oleh University of California, Berkeley. Konsep RISC dimotivasi oleh kenyataan bahwa sebagian besar instruksi prosesor tidak digunakan oleh sebagian besar program komputer. Jadi, logika decoding yang tidak perlu digunakan dalam desain prosesor , mengkonsumsi lebih banyak daya serta area. Untuk mempersingkat set instruksi & untuk berinvestasi lebih banyak dalam sumber daya register, Prosesor RISC V diimplementasikan.
Teknologi ini diperhatikan oleh banyak raksasa teknologi dan start-up karena sepenuhnya open source & gratis. Sebagian besar jenis prosesor tersedia dengan perjanjian lisensi, namun dengan jenis prosesor ini; siapa pun dapat membuat desain prosesor baru mereka. Jadi artikel ini membahas gambaran umum tentang prosesor RISC V – cara kerja dan aplikasinya.
Apa itu Prosesor RISC V?
Dalam prosesor RISC V, istilah RISC adalah singkatan dari 'reduced instruction set computer' yang mengeksekusi beberapa instruksi komputer sedangkan 'V' adalah singkatan dari generasi ke-5. Ini adalah ISA perangkat keras open-source (arsitektur set instruksi) berdasarkan prinsip yang ditetapkan: MEMPERTARUHKAN .
Dibandingkan dengan desain ISA lainnya, ISA ini tersedia dengan lisensi open source. Jadi, sejumlah perusahaan manufaktur telah mengumumkan dan juga menyediakan perangkat keras RISC-V, dengan sistem operasi open-source.
Ini adalah arsitektur baru dan tersedia dalam lisensi terbuka, tidak terbatas & gratis. Prosesor ini mendapat dukungan luas dari industri pembuat chip & perangkat. Jadi ini terutama dirancang agar dapat diperluas & disesuaikan secara bebas untuk digunakan di banyak aplikasi.
Sejarah RISC V
RISC ditemukan oleh Prof. David Patterson sekitar tahun 1980 di University of California, Berkeley. Prof. David bersama Prof. John Hennessy menyampaikan usahanya dalam dua buku yaitu “Computer Organization and Design” & “Computer Architecture at Stanford University. Jadi, mereka menerima ACM A.M. Penghargaan Turing di tahun 2017.
Dari tahun 1980 hingga tahun 2010, penelitian pengembangan generasi kelima RISC dimulai dan akhirnya diidentifikasi sebagai RISC-V yang diucapkan sebagai risiko lima.
Arsitektur & Pengerjaan RISC V
Arsitektur RV12 RISC V ditunjukkan di bawah ini. RV12 sangat dapat dikonfigurasi dengan CPU RISC single-core RV32I dan RV64I yang digunakan di bidang tertanam. RV12 juga berasal dari keluarga CPU 32 atau 64-bit tergantung pada set instruksi RISC-V standar industri.
RV12 hanya menjalankan arsitektur Harvard untuk akses simultan ke instruksi serta memori data. Ini juga mencakup pipa 6-tahap yang membantu dalam mengoptimalkan tumpang tindih di antara eksekusi serta akses memori untuk meningkatkan efisiensi. Arsitektur ini terutama mencakup Prediksi Cabang, Cache Data, Unit Debug, Cache Instruksi, & Unit Pengganda atau Pembagi opsional.
Fitur utama RV12 RISC V adalah sebagai berikut.
- Ini adalah set instruksi standar Industri.
- Diparameterisasi dengan data 32 atau 64bit.
- Ini memiliki interupsi yang tepat dan cepat.
- Instruksi khusus memungkinkan penambahan akselerator perangkat keras berpemilik.
- Eksekusi satu siklus.
- Pipa enam tahap dengan pengoptimalan terlipat.
- Dukungan dengan perlindungan memori.
- Cache opsional atau Parameterized.
- Sangat Parameter.
- Pengguna dapat memilih data 32/ 64-bit & Unit Prediksi Cabang.
- Pengguna dapat memilih cache instruksi/data.
- Struktur, ukuran & arsitektur cache yang dapat dipilih pengguna.
- Dukungan Pembagi atau Pengganda Perangkat Keras dengan latensi yang ditentukan pengguna.
- Arsitektur bus fleksibel yang mendukung Wishbone & AHB.
- Desain ini mengoptimalkan kekuatan & ukuran.
- Desain sepenuhnya diparameterisasi yang memberikan pengorbanan kinerja atau daya.
- Desain CLK berpagar untuk mengurangi daya.
- Dukungan perangkat lunak dengan standar Industri.
- Simulator arsitektur.
- Eclipse IDE digunakan untuk Linux/Windows.
Pipa Eksekusi RISC V
Ini mencakup lima tahap seperti IF (pengambilan instruksi), ID (dekode instruksi), EX (eksekusi), MEM (akses memori) & WB (register write-back).
Ambil Instruksi
Pada tahap Instruction Fetch atau IF, satu instruksi dibaca dari program counter (PC) dan memori instruksi yang diperbarui ke instruksi berikutnya.
Instruksi Pra-Decode
Setelah Dukungan RVC diizinkan, maka tahap Pra-Dekode Instruksi akan mendekodekan instruksi terkompresi 16-bit menjadi instruksi asli 32-bit.
Dekode Instruksi
Pada tahap Instruction Decode (ID), Register File diperbolehkan & kontrol bypass diputuskan.
Menjalankan
Pada tahap Execute, hasilnya dihitung untuk instruksi ALU, DIV, MUL, memori yang diizinkan untuk instruksi Store atau Load, dan cabang & lompatan diukur terhadap hasil yang diharapkan.
Penyimpanan
Dalam tahap Memori ini, memori diakses melalui pipa. Dimasukkannya fase ini memastikan kinerja tinggi pipeline.
Menulis kembali
Pada tahap ini, hasil tahap Eksekusi ditulis ke dalam Register File.
Prediktor Cabang
Prosesor ini termasuk unit prediktor cabang atau BPU yang digunakan untuk menyimpan data masa lalu untuk memandu prosesor RISC V dalam memutuskan apakah cabang tertentu diambil atau tidak-. Data prediktor ini hanya diperbarui setelah cabang dijalankan.
Unit ini mencakup parameter berbeda yang menentukan perilakunya. Misalnya, HAS_BPU digunakan untuk menentukan apakah cabang memprediksi unit hadir, BPU_GLOBAL_BITS akan menentukan berapa banyak bit masa lalu yang harus digunakan dan BPU_LOCAL_BITS akan menentukan berapa banyak LSB penghitung program yang harus digunakan. Kombinasi BPU_LOCAL_BITS & BPU_GLOBAL_BITS akan membuat vektor yang terutama digunakan untuk mengatasi Tabel Prediksi Cabang.
Tembolok Data
Ini terutama digunakan untuk mempercepat akses memori data dengan buffering lokasi memori yang baru diakses. Ini mampu menangani akses setengah kata, byte & kata ketika XLEN = 32 jika mereka berada di batas mereka sendiri. Itu juga mampu menangani akses setengah kata, byte, kata & kata ganda ketika XLEN=64 jika mereka berada di batas mereka sendiri.
Sepanjang cache miss, seluruh blok dapat ditulis kembali ke memori, Jadi jika perlu, blok baru dapat dimuat ke dalam cache. Cache Data dinonaktifkan dengan menyetel DCACHE_SIZE ke nol. Setelah itu, lokasi memori diakses langsung melalui Antarmuka Data .
Cache Instruksi
Ini terutama digunakan untuk mempercepat pengambilan instruksi dengan buffering instruksi yang baru diambil. Cache ini digunakan untuk mengambil satu paket untuk setiap siklus pada batas 16-bit tetapi tidak melintasi batas blok. Sepanjang cache miss, seluruh blok dapat dimuat dari memori instruksi. Konfigurasi cache ini dapat dilakukan berdasarkan kebutuhan pengguna. Ukuran cache, algoritma penggantian, dan panjang blok dapat dikonfigurasi.
Siklus instruksi akan dinonaktifkan dengan Mengatur ICACHE_SIZE ke nol. Setelah itu, parsel diambil langsung dari memori melalui Antarmuka Instruksi.
Unit Debug
Unit Debug akan memungkinkan lingkungan Debug untuk berhenti dan memeriksa CPU. Fitur utama dari ini adalah Pelacakan Cabang, Pelacakan Satu Langkah hingga 8- Breakpoint Perangkat Keras.
Daftar File
Ini dirancang dengan 32 lokasi register dari X0 hingga X31 di mana Register X9 selalu nol. Register File mencakup 1- port tulis & 2- port baca.
Antarmuka yang Dapat Dikonfigurasi
Ini adalah antarmuka eksternal di mana prosesor ini mendukung antarmuka bus eksternal yang berbeda.
Bagaimana RISC V Bekerja?
RISC-V adalah arsitektur set instruksi yang berakar pada prinsip RISC (reduced instruction set computer). Prosesor ini sangat unik dan juga revolusioner karena merupakan ISA gratis, umum, dan open-source di mana perangkat keras dapat dikembangkan, perangkat lunak dapat di-porting & prosesor dapat dirancang untuk mendukungnya.
Perbedaan B/W RISC V Vs MIPS
Perbedaan RISC V dan MIPS antara lain sebagai berikut.
RISC V |
MIPS |
Istilah RISC V adalah singkatan dari Reduced Instruction Set Computer dimana 'V' adalah generasi kelima. | Istilah 'MIPS' adalah singkatan dari 'Juta instruksi per detik'. |
RISC-V hanya mengizinkan produsen perangkat yang lebih kecil untuk merancang perangkat keras tanpa membayar. | MIPS memungkinkan produsen untuk mengukur kecepatan prosesor dengan membayar karena tidak gratis. |
MIPS mati secara efisien. | RISC-V tidak mati secara efisien. |
Prosesor ini menyediakan instruksi cabang untuk membandingkan dua register. | MIPS tergantung pada instruksi perbandingan yang menempatkan register ke 1 atau 0 berdasarkan apakah kontrasnya benar. |
Skema pengkodean ISA adalah tetap & variabel di RISC V. | Skema pengkodean ISA diperbaiki di MIPS |
Ukuran set instruksi adalah 16-bit atau 32-bit atau 64-bit atau 128-bit. | Ukuran set instruksi adalah 32-bit atau 64-bit. |
Ini memiliki 32 register tujuan umum & floating point | Ini memiliki 31 register tujuan umum & floating point. |
Ini memiliki 26 operasi floating point presisi tunggal & ganda. | Ini memiliki 15 operasi floating point presisi tunggal & ganda. |
Perbedaan B/W RISC V Vs ARM
Perbedaan RISC V Vs ARM antara lain sebagai berikut.
RISC V |
LENGAN |
RISC-V adalah open source, jadi tidak memerlukan lisensi apa pun. | ARM adalah sumber tertutup, sehingga membutuhkan lisensi. |
Ini adalah platform prosesor baru, jadi hanya ada sedikit dukungan untuk perangkat lunak & lingkungan pemrograman. | ARM memiliki komunitas online yang sangat besar, yang mendukung perpustakaan & struktur untuk membantu perancang target di berbagai platform seperti mikroprosesor, mikrokontroler & juga server. |
Chip berbasis RISC V menggunakan daya 1 watt. | Chip berbasis ARM menggunakan daya di bawah 4 watt. |
Ini memiliki sistem pengkodean ISA tetap & variabel. | Ini memiliki sistem pengkodean ISA tetap. |
Ukuran set instruksi RISC V berkisar dari 16-bit hingga 128-bit. | Ukuran instruksinya berkisar dari 16-bit hingga 64-bit. |
Ini mencakup 32 register tujuan umum & titik mengambang. | Ini mencakup 31 register tujuan umum & floating point. |
Ini memiliki 26 operasi floating point presisi tunggal. | Ini memiliki 33 operasi floating point presisi tunggal. |
Ini memiliki operasi floating point presisi 26-ganda. | Ini memiliki operasi floating point presisi 29-ganda. |
Kode Verilog RISC V
Kode Verilog memori instruksi untuk RISC ditunjukkan di bawah ini.
// Kode Verilog untuk Prosesor RISC
// Kode Verilog untuk Memori Instruksi
modul Instruksi_Memori(
masukan[15:0] pc,
keluaran[15:0] instruksi
);
reg [`col – 1:0] memori [`row_i – 1:0];
kawat [3 : 0] rom_addr = pc[4 : 1];
awal
mulai
$readmemb(“./test/test.prog”, memori,0,14);
akhir
menetapkan instruksi = memori[rom_addr];
modul akhir
Kode Verilog untuk prosesor RISC V 16-bit:
modul Risc_16_bit(
masukan klk
);
lompat kawat,bne,beq,mem_read,mem_write,alu_src,reg_dst,mem_to_reg,reg_write;
kawat[1:0] alu_op;
kawat [3:0] opcode;
// Jalur data
Datapath_Unit DU
(
.clk(clk),
.lompat(lompat),
.katak(katak),
.mem_read(mem_read),
.mem_write(mem_write),
.alu_src(alu_src),
.reg_dst(reg_dst),
.mem_to_reg(mem_to_reg),
.reg_write(reg_write),
.bne(bne),
.alu_op(alu_op),
.opcode(opcode)
);
// unit kontrol
Kontrol_Kontrol unit
(
.opcode(opcode),
.reg_dst(reg_dst),
.mem_to_reg(mem_to_reg),
.alu_op(alu_op),
.lompat(lompat),
.bne(bne),
.katak(katak),
.mem_read(mem_read),
.mem_write(mem_write),
.alu_src(alu_src),
.reg_write(reg_write)
);
modul akhir
Set Instruksi
Set instruksi RISC V dibahas di bawah ini.
Operasi Aritmatika
Operasi aritmatika RISC V tercantum di bawah ini.
Mnemonik | Jenis | Petunjuk | Keterangan |
TAMBAHKAN rd, rs1, rs2 |
R |
Menambahkan | rdß rs1 + rs2 |
SUB rd, rs1, rs2 |
R |
Mengurangi | rdß rs1 – rs2 |
ADDI rd, rs1, imm12 |
Saya |
Tambahkan segera | rdß rs1 + imm12 |
SLT rd, rs1, rs2 |
R |
Tetapkan kurang dari | rdß rs1 -< rs2 |
SLTI rd, rs1, imm12 |
Saya |
Tetapkan kurang dari segera | rdß rs1 -< imm12 |
SLTU rd, rs1, rs2 |
R |
Setel kurang dari yang tidak ditandatangani | rdß rs1 -< rs2 |
SLTIU rd, rs1, imm12 |
Saya |
Tetapkan kurang dari segera tidak ditandatangani | rdß rs1 -< imm12 |
LUI rd, imm20 |
DI |
Muat bagian atas segera | rdß imm20<<12 |
AUIP rd, imm20 |
DI |
Tambahkan bagian atas langsung ke PC | rdß PC+imm20<<12 |
Operasi Logika
Operasi logis RISC V tercantum di bawah ini.
Mnemonik | Jenis | Petunjuk | Keterangan |
DAN rd, rs1, rs2 |
R |
DAN | rdß rs1 & rs2 |
ATAU rd, rs1, rs2 |
R |
ATAU | rdß rs1 | rs2 |
XOR rd, rs1, rs2 |
R |
GRATIS | rdß rs1 ^ rs2 |
ANDI rd, rs1, imm12 |
Saya |
DAN segera | rdß rs1 & imm2 |
ORI rd, rs1, imm12 |
Saya |
ATAU Segera | rdß rs1 | imm12 |
OXRI rd, rs1, imm12 |
Saya |
XOR segera | rdß rs1 ^ rs2 |
SLL rd, rs1, rs2 |
R |
Geser ke kiri logis | rdß rs1 << rs2 |
SRL rd, rs1, rs2 |
R |
Geser ke kanan logis | rdß rs1 >> rs2 |
RAS rd, rs1, rs2 |
R |
Geser aritmatika ke kanan | rdß rs1 >> rs2 |
SLLI rd, rs1, palsu |
Saya |
Geser ke kiri langsung logis | rdß rs1 << palsu |
SRLI rd, rs1, palsu |
Saya |
Geser logika kanan segera | rdß rs1 >> palsu |
SRAI rd, rs1, palsu |
Saya |
Geser aritmatika ke kanan segera | rdß rs1 >> palsu |
Operasi Muat/Penyimpanan
Operasi pemuatan/penyimpanan RISC V tercantum di bawah ini.
Mnemonik | Jenis | Petunjuk | Keterangan |
LD rd, imm12 (rs1) |
Saya |
Muat kata ganda | rdß mem [rs1 +imm12] |
LW rd, imm12 (rs1) |
Saya |
Muat kata | rdß mem [rs1 +imm12] |
LH rd, imm12 (rs1) |
Saya |
Muat setengah jalan | rdß mem [rs1 +imm12] |
LB rd, imm12 (rs1) |
Saya |
Muat byte | rdß mem [rs1 +imm12] |
LWU rd, imm12 (rs1) |
Saya |
Muat kata tanpa tanda tangan | rdß mem [rs1 +imm12] |
LHU rd, imm12 (rs1) |
Saya |
Muat setengah kata tanpa tanda tangan | rdß mem [rs1 +imm12] |
LBU rd, imm12 (rs1) |
Saya |
Muat byte tidak ditandatangani | rdß mem [rs1 +imm12] |
SD rs2, imm12 (rs1) |
S |
Simpan kata ganda | rs2 ke mem [rs1 +imm12] |
SW rs2, imm12 (rs1) |
S |
Simpan kata | rs2 (31:0) ke mem [rs1 +imm12] |
SH rs2, imm12 (rs1) |
S |
Simpan setengah jalan | rs2 (15:0) ke mem [rs1 +imm12] |
SB rs2, imm12 (rs1) |
S |
Simpan byte | rs2 (15:0) ke mem [rs1 +imm12] |
SRAI rd, rs1, palsu |
Saya |
Geser aritmatika ke kanan segera | rs2 (7:0) ke mem [rs1 +imm12] |
Operasi Percabangan
Operasi percabangan RISC V tercantum di bawah ini.
Mnemonik | Jenis | Petunjuk | Keterangan |
BEQ rs1, rs2, imm12 |
SB |
Cabang sama | Jika rs1== rs2 PC PC + imm12 |
BNE rs1, rs2, imm12 |
SB |
Cabang tidak sama | Jika rs1!= rs2 PC PC + imm12 |
BGE rs1, rs2, imm12 |
SB |
Cabang lebih besar dari atau sama | Jika rs1>= rs2 PC PC + imm12 |
BGEU rs1, rs2, imm12 |
SB |
Cabang lebih besar dari atau sama dengan unsigned | Jika rs1>= rs2 PC PC + imm12 |
BLT rs1, rs2, imm12 |
SB |
Cabang kurang dari | Jika rs1< rs2 PC PC + imm12 |
BLTU rs1, rs2, imm12 |
SB |
Cabang kurang dari tidak ditandatangani | Jika rs1< rs2 PC PC+imm12 <<1 |
JAL rd, imm20 |
UJ |
Lompat dan Tautkan | rdßPC+4 PCß PC+imm20 |
JALR rd, imm12(rs1) |
Saya |
Langsung dan Tautkan daftar | rdßPC+4 PCß rs1+imm12 |
Keuntungan
Itu kelebihan RISC prosesor V termasuk berikut ini.
- Dengan menggunakan RISCV, kita dapat menghemat waktu pengembangan, pengembangan perangkat lunak, verifikasi, dll.
- Prosesor ini memiliki banyak kelebihan seperti kesederhanaan, keterbukaan, modularitas, desain yang bersih, dan dapat diperpanjang.
- Ini didukung oleh beberapa kompiler bahasa seperti GCC (GNU Compiler Collection), kompiler perangkat lunak bebas & melalui OS Linux .
- Ini dapat digunakan oleh perusahaan secara bebas karena tanpa royalti, tanpa biaya lisensi & tanpa ikatan.
- Prosesor RISC-V tidak menyertakan fitur baru atau inovatif karena hanya mengikuti prinsip-prinsip RISC yang sudah ada.
- Serupa dengan beberapa ISA lainnya, spesifikasi prosesor ini hanya mendefinisikan berbagai tingkat set instruksi. Jadi ini berisi varian 32 & 64-bit serta ekstensi untuk memberikan dukungan untuk instruksi floating point.
- Ini gratis, sederhana, modular, stabil, dll.
Kekurangan
Itu kelemahan dari prosesor RISC V termasuk berikut ini.
- Instruksi kompleks sering digunakan oleh kompiler & programmer.
- Output dari RISC dapat berubah berdasarkan kode ketika instruksi berikutnya dalam satu loop bergantung pada instruksi sebelumnya untuk dieksekusi.
- Prosesor ini perlu menyimpan berbagai instruksi dengan cepat, yang memerlukan memori cache yang besar untuk merespons instruksi dalam waktu yang tepat.
- Fitur lengkap, kemampuan & manfaat RISC terutama tergantung pada arsitekturnya.
Aplikasi
Itu aplikasi RISC V prosesor termasuk berikut ini.
- RISC-V digunakan dalam sistem tertanam, kecerdasan buatan & pembelajaran mesin.
- Prosesor ini digunakan dalam aplikasi sistem tertanam berbasis kinerja tinggi.
- Prosesor ini cocok digunakan di beberapa bidang tertentu seperti komputasi tepi, AI & aplikasi penyimpanan.
- RISC-V penting karena memungkinkan produsen perangkat yang lebih kecil untuk merancang perangkat keras tanpa membayar.
- Prosesor ini hanya memungkinkan para peneliti dan pengembang untuk merancang serta meneliti dengan ISA atau arsitektur set instruksi yang tersedia secara bebas.
- Aplikasi RISC V berkisar dari mikrokontroler tertanam kecil hingga PC desktop & superkomputer termasuk prosesor vektor.
Jadi, ini adalah gambaran umum tentang Prosesor RISC V – arsitektur, bekerja dengan aplikasi. Berikut adalah pertanyaan untuk Anda, apa itu prosesor CISC?