Desain Unit Pemrosesan
Mesin von Neumann Konsep untuk memiliki sebuah program yang tersimpan dalam memori komputer Arsitektur dasar mesin ini masih menjadi kerangka referensi pada komputer modern
Mesin von Neumann
Mesin von Neumann Program disimpan dalam unit memori utama, yang berhadapan dengan piranti input/output (I/O) melalui unit pengolahan pusat (CPU atau central processing unit) CPU membaca dari atau menulis ke memori, pertama-tama dengan mengirimkan alamat word ke unit memori melalui bus adress dan kemudian menerima atau mengirimkan data melalui bus data. Data dipertukarkan antara CPU dan unit I/O juga menggunakan data bus. Operasi ini disinkronisasikan oleh dua bus control dengan sinyal kendali yang dikirim oleh CPU dan sinyal acknowledgement serta sinyal interupsi yang diterima oleh CPU.
Prosesor: Control & Datapath Processor (active) Computer Control Datapath Memory (passive) (dimana program, data ada ketika dijalankan) Devices Input Output That is, any computer, no matter how primitive or advance, can be divided into five parts: 1. The input devices bring the data from the outside world into the computer. 2. These data are kept in the computer’s memory until ... 3. The datapath request and process them. 4. The operation of the datapath is controlled by the computer’s controller. All the work done by the computer will NOT do us any good unless we can get the data back to the outside world. 5. Getting the data back to the outside world is the job of the output devices. The most COMMON way to connect these 5 components together is to use a network of busses.
Bagian Utama CPU Kumpulan register / register set Unit aritmatika dan logika (ALU / Arithmetic and Logic Unit) Unit kendali logika (CU / Control Unit)
Bagian Utama CPU Kumpulan register menyimpan informasi sementara yang diperlukan untuk melaksanakan sebuah instruksi atau kumpulan instruksi / program ALU menggunakan nilai-nilai yang tersimpan dalam kumpulan register untuk melakukan operasi aritmatika dan logika
Bagian Utama CPU CU mengendalikan sistem dalam dua cara: Dengan mengarahkan transfer ke dan dari register baik ke maupun dari memori, ALU dan register lainnya Dengan memerintahkan ALU ke operasi yang akan dijalankan
Bagian Utama CPU
Kumpulan Register Register dari sebuah komputer secara kolektif disebut sebagai kumpulan register / register set Beberapa register mungkin mempunyai jenis yang sama, yang lainnya mungkin berbeda Beberapa register berlaku umum pada hampir semua komputer
Register Program Counter Menyimpan alamat memori dari instruksi selanjutnya yang akan dijalankan Pelaksanaan sebuah program biasanya dilakukan berurutan, maka alamat instruksi berikutnya bernilai 1 lebih tinggi daripada alamat dari instruksi saat ini. PC ← (PC)+1 Jika suatu jump atau cabang instruksi dijalankan, instruksi yang akan dilaksanakan berikutnya disimpan pada alamat yang ditentukan dalam cabang instruksi. Dalam hal ini, kita ingin me-load langsung alamat baru ke PC : PC ← bagian alamat dari instruksi cabang
Register Instruksi Register khusus untuk menyimpan instruksi Pertama, instruksi di-fetch dari memori dan disimpan dalam IR kemudian PC ditingkatkan sehingga ia menunjuk ke instruksi berikutnya IR ← M[PC] PC ← (PC)+1 M[PC] menunjukkan isi lokasi memori yang ditunjuk oleh PC. Sekali instruksi disimpan dalam IR, maka instruksi tersebut dapat di-decode oleh Control Unit (CU) dan operasi mikro dapat diaktifkan untuk pelaksanaannya
Register Umum Untuk menyimpan nilai-nilai sementara selama pelaksanaan instruksi Sebuah komputer memiliki sebuah register prosesor untuk pelaksanaan instruksi-instruksi, disebut Accumulator (ACC)
Register Flag Mengendalikan aliran pelaksanaan pada CU dan ALU
Organisasi Prosesor (single bus) Y Z MDR MAR PC TEMP R(n-1) R0 IR Instruction Decoder ALU Carry-in Add Sub XOR Address lines Data lines Control lines Memory bus ALU control lines Control Unit DatapathUnit
Operasi Dasar Prosesor Operasi-operasi Dasar: Mengambil (fetching) Data dari Memori Menyimpan (storing) Data ke Memori Pertukaran Data Antar-Register Operasi Aritmatika & Logika di Datapath
Siklus Eksekusi Program CPU mem-fetch instruksi berikutnya dari memori CPU men-decode instruksi Berdasarkan instruksi, CPU mengeluarkan sinyal kendali untuk mem-fetch operand lainnya jika diperlukan dan kemudian akan melaksanakan salah satu tindakan berikut ini : Melakukan operasi aritmatika atau logika Menyimpan sebuah hasil ke dalam memori Membaca sebuah hasil dari atau menuliskan hasil ke piranti I/O CPU kembali ke langkah pertama dan melanjutkan proses hingga program diberhentikan
Siklus Eksekusi Program 1. IR M[PC] // Fetch instruksi 2. PC PC + d // Tunjuk ke lokasi instruksi berikutnya 3. Eksekusi instruksi
Mengambil Data dari Memori Y Z MDR MAR PC TEMP R2 R1 IR Instruction Decoder ALU Carry-in Add Sub XOR Address lines Data lines Read MFC Instruksi: LD R2,(R1) ; R2 M[R1] Langkah-langkah: MAR R1 Read Tunggu sinyal MFC // MFC = Memory Function Completed // Pada saat MFC aktif: // MDR M[MAR] R2 MDR
Menyimpan Data ke Memori Z MDR MAR PC TEMP R2 R1 IR Instruction Decoder ALU Carry-in Add Sub XOR Address lines Data lines Write MFC Instruksi: ST (R1),R2 ; M[R1] R2 Langkah-langkah: MAR R1 MDR R2, Write Tunggu sinyal MFC // MFC = Memory Function Completed // Pada saat MFC aktif: // M[MAR] MDR
Pertukaran Data Antar-Register R1in Instruksi: MOV R4,R1 ; R4 R1 Langkah-langkah: Enable output of R1 // setting R1out to 1 Enable input of R4 // setting R4in to 1 X R1 X R1out R4in X R4 X R4out
Operasi Aritmatika dan Logika Y Z Ri ALU A B X Riin Riout Yin Yout Zin Zout Add Instruksi: ADD R1,R2 ; R1 R1 + R2 Langkah-langkah: R1out, Yin R2out, Add, Zin Zout, R1in
Operasi (A&L): Bagian dari Pertukaran Data Komponen-komponen Datapath: Register: tempat penyimpanan data ALU: tempat pemrosesan aritmatika & logika Bus: penghubung antar-register & antara register-ALU Eksekusi Instruksi merupakan kombinasi pertukaran data antara: Register Bus Register Register Bus ALU Register Bus Memori Pertukaran data dilakukan dengan cara mengaktifkan gerbang-gerbang register dengan menggunakan sinyal-sinyal kendali (PCout, PCin, dst.) Selain itu, juga ada sinyal-sinyal kendali yang berhubungan dengan komponen-komponen lain (Memori: Read, Write; ALU: Add, Sub, Set Carry-in, dst.)
Tahapan Eksekusi Instruksi Add R1,(R3) ; R1 R1 + M[R3] Langkah-langkah: Fetch instruksi PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin Zout, PCin, WMFC MDRout, IRin Fetch operand #1 (isi lokasi memori yg ditunjuk oleh R3) R3out, MARin, Read R1out, Yin, WMFC Lakukan operasi penjumlahan MDRout, Add, Zin Simpan hasil penjumlahan di R1 Zout, R1in, End
1. Fetch instruksi PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin Zout, PCin, WMFC MDRout, IRin Y Z MDR MAR PC TEMP R3 R1 IR Instruction Decoder ALU Control lines Address lines Data lines 00000000 Add 1 PC+1 Carry-in
2. Fetch operand #1 R3out, MARin, Read R1out, Yin, WMFC ALU Z MDR MAR PC=PC+1 TEMP R3 R1 IR Instruction Decoder ALU Address lines Data lines
3. Lakukan operasi penjumlahan MDRout, Add, Zin Y=R1 Z MDR=M[R3] MAR PC=PC+1 TEMP R3 R1 IR Instruction Decoder ALU Address lines Data lines Add Carry-in Zin
4. Simpan hasil penjumlahan Zout, R1in, End Y=R1 Z=R1+M[R3] MDR=M[R3] MAR PC=PC+1 TEMP R3 R1 IR Instruction Decoder ALU Address lines Data lines
Tahapan Eksekusi “Branching” Unconditional (JMP Loop) PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin Zout, PCin, WMFC MDRout, IRin PCout, Yin Offset-field-of-IRout, Add, Zin // PC PC + Offset Zout, PCin, End Conditional (contoh: BRNeg Loop) PCout, Yin , If N=0 then End // take the branch?
LD Rd,X
Tahapan Eksekusi Instruksi: LD Rd,X LD R16,X ; R16 M[X] Langkah-langkah: Fetch instruksi PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin Zout, PCin, WMFC MDRout, IRin Fetch operand dari lokasi memori yang ditunjuk oleh X Xout, MARin, Read WMFC Lakukan operasi ALU Simpan hasil penjumlahan di R16 MDRout, R16in, End
Tahapan Eksekusi Instruksi: LD Rd,X PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin Zout, PCin, WMFC MDRout, IRin Xout, MARin, Read WMFC MDRout, R16in, End Y Z MDR MAR PC TEMP R16 X IR Instruction Decoder ALU Control lines Read Address lines PCout Data lines MARin Clear Y 00000000 Add 1 Set Carry-in PC+1 Zin
Tahapan Eksekusi Instruksi: LD Rd,X PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin Zout, PCin, WMFC MDRout, IRin Xout, MARin, Read WMFC MDRout, R16in, End Y Z = PC+1 MDR MAR PC TEMP R16 X IR Instruction Decoder ALU Control lines WMFC Address lines PCin Data lines Zout
Tahapan Eksekusi Instruksi: LD Rd,X PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin Zout, PCin, WMFC MDRout, IRin Xout, MARin, Read WMFC MDRout, R16in, End Y Z MDR MAR PC+1 TEMP R16 X IR Instruction Decoder ALU Control lines Address lines IRin Data lines MDRout
Tahapan Eksekusi Instruksi: LD Rd,X PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin Zout, PCin, WMFC MDRout, IRin Xout, MARin, Read WMFC MDRout, R16in, End Y Z MDR MAR PC+1 TEMP R16 X IR Instruction Decoder ALU Control lines Read Address lines MARin Data lines Xout
Tahapan Eksekusi Instruksi: LD Rd,X PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin Zout, PCin, WMFC MDRout, IRin Xout, MARin, Read WMFC MDRout, R16in, End Y Z MDR MAR PC+1 TEMP R16 X IR Instruction Decoder ALU Control lines WMFC Address lines Data lines
Tahapan Eksekusi Instruksi: LD Rd,X PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin Zout, PCin, WMFC MDRout, IRin Xout, MARin, Read WMFC MDRout, R16in, End Y Z MDR MAR PC+1 TEMP R16 X IR Instruction Decoder ALU Control lines Address lines Data lines MDRout R16in
ADD Rd,Rs
Tahapan Eksekusi Instruksi: ADD Rd, Rs ADD R16,R17 ; R16 R16 + R17 Langkah-langkah: Fetch instruksi PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin Zout, PCin, WMFC MDRout, IRin Fetch operand ke-1 (R16) R16out, Yin Fetch operand ke-2 (R17) dan Lakukan operasi ALU R17out, Add, Zin Simpan hasil penjumlahan di R16 Zout, R16in, End
Tahapan Eksekusi Instruksi: ADD Rd, Rs PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin Zout, PCin, WMFC MDRout, IRin R16out, Yin R17out, Add, Zin Zout, R16in, End Y Z MDR MAR PC TEMP R16 R17 IR Instruction Decoder ALU Control lines Read Address lines PCout Data lines MARin Clear Y 00000000 Add 1 Set Carry-in PC+1 Zin
Tahapan Eksekusi Instruksi: ADD Rd, Rs PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin Zout, PCin, WMFC MDRout, IRin R16out, Yin R17out, Add, Zin Zout, R16in, End Y Z = PC+1 MDR MAR PC TEMP R16 R17 IR Instruction Decoder ALU Control lines WMFC Address lines PCin Data lines Zout
Tahapan Eksekusi Instruksi: ADD Rd, Rs PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin Zout, PCin, WMFC MDRout, IRin R16out, Yin R17out, Add, Zin Zout, R16in, End Y Z MDR MAR PC+1 TEMP R16 R17 IR Instruction Decoder ALU Control lines Address lines IRin Data lines MDRout
Tahapan Eksekusi Instruksi: ADD Rd, Rs PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin Zout, PCin, WMFC MDRout, IRin R16out, Yin R17out, Add, Zin Zout, R16in, End Y Z MDR MAR PC+1 TEMP R16 R17 IR Instruction Decoder ALU Control lines Address lines Data lines Yin R16out
Tahapan Eksekusi Instruksi: ADD Rd, Rs PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin Zout, PCin, WMFC MDRout, IRin R16out, Yin R17out, Add, Zin Zout, R16in, End Control lines Instruction Decoder PC+1 Address lines MAR IR Data lines MDR R17 R17out Y=R16 R16 Add ALU Zin Z TEMP
Tahapan Eksekusi Instruksi: ADD Rd, Rs PCout, MARin, Read, Clear Y, Set carry-in to ALU, Add, Zin Zout, PCin, WMFC MDRout, IRin R16out, Yin R17out, Add, Zin Zout, R16in, End Y=R16 Z=R16+R17 MDR MAR PC+1 TEMP R16 R17 IR Instruction Decoder ALU Control lines Address lines Data lines R16out Zout
Peningkatan Kinerja Prosesor
Multiple-bus: salah satu cara peningkatan kinerja MDR MAR PC TEMP Register File IR Instruction Decoder ALU A B C Data lines Address lines Memory Bus Add R1,R2,R3 ;R1R2+R3
Bandingkan dengan Organisasi Single-bus Y Z MDR MAR PC TEMP R3 R1 IR Instruction Decoder ALU R2 Add R1,R2,R3 ;R1R2+R3
Beberapa Teknik Peningkatan Kinerja Prosesor Lainnya Pre-fetching: instruksi berikutnya (i+1) di-fetch pada waktu pengeksekusian instruksi (i) Perlu teknik “Branch Prediction” Pipelining: eksekusi instruksi dipecah kedalam tahap-tahap yang dapat dilakukan secara “overlap” Fetch Instruksi Decode Instruksi Baca Operand (dari register asal) Lakukan Operasi Tulis Hasil (ke register tujuan) On-chip Cache: mempercepat akses data dari/ke memori