KOMPUTER SIMPLE AS POSSIBLE (SAP-1)
Pengantar Komputer SAP (Simple as Possible) artinya komputer sesederhana mungkin Digunakan untuk memperkenalkan cara kerja komputer yang paling sederhana Merupakan tahap pertama dalam evolusi perkembangan komputer-komputer modern
Arsitektur
Arsitektur Arsitektur komputer SAP sebuah komputer berorganisasi bus Semua keluaran register menuju bus W yang merupakan bus tiga-keadaan Keluaran register hanya memiliki dua-keadaan Unit-unit yang ada: Pencacah Program, Masukan dan MAR, RAM, Register Instruksi, Pengendali - pengurut, Akumulator, Penjumlah-pengurang, Register B, Register keluaran, dan peraga biner
Pencacah Program (Program Counter) Program disimpan pada bagian awal memori. Instruksi pertama disimpan pada alamat 0000, instruksi kedua disimpan pada alamat 0001, instruksi ketiga disimpan pada alamat 0010, dst Pencacah program akan mencacah dari 0000 sd 1111 Tugas: mengirimkan ke memori alamat instruksi berikutnya yang akan diambil dan dieksekusi
Pencacah Program (Program Counter) Program Counter (PC) direset ke 0000 setiap kali komputer dijalankan Saat komputer dijalankan: PC mengirimkan alamat 0000 ke memori. Kemudian PC meng-increment cacahannya menjadi 0001 Setelah isi alamat 0000 diambil dan dieksekusi, PC mengirimkan alamat 0001 ke memori. Pencacah menaikkan cacahannya kembali Setelah instruksi pada alamat 0001 diambil dan dieksekusi, PC mengirimkan lagi alamat 0010 ke memori. Dan seterusnya …. (sampai dengan instruksi terakhir dieksekusi)
Pencacah Program (Program Counter) PC dapat dibayangkan seperti seseorang yang memakai jarinya untuk menunjukkan kepada suatu daftar instruksi yang harus dilaksanakan PC sering disebut dengan Penunjuk (Pointer), pencacah yang menunjuk kepada suatu alamat tertentu pada memori yang akan dieksekusi
Masukan dan MAR Singkatan dari Memory Address Register Merupakan register yang digunakan untuk menahan (latched) alamat data yang akan dibaca dari RAM Kemudian MAR mengirimkan alamat 4-bit ke dalam RAM, dimana operasi membaca dilaksanakan
RAM Pada saat komputer bekerja, RAM menerima alamat 4-bit dari MAR dan kemudian operasi membaca dilaksanakan Prosesnya: instruksi dan kata yang ada dalam RAM ditempatkan pada bus W untuk digunakan oleh beberapa bagian lain komputer
Register Instruksi (Instruction Register) Register instruksi merupakan bagian dari unit kendali Untuk mengambil sebuah instruksi dari memori, komputer melakukan operasi membaca memori hasilnya dimuat ke bus W kemudian masuk ke register instruksi Dibagi dua medan: Bagian most significant (4-bit atas, untuk bagian opcode) keluaran bersifat 2-keadaan, terhubung ke blok pengendali - pengurut Bagian least significant (4-bit bawah, untuk bagian operand) keluaran bersifat 3-keadaan, dapat dimuat di bus W apabila diperlukan
Pengendali - Pengurut Sebelum komputer bekerja, sinyal CLR dan CLR masing-masing dikirimkan ke PC dan IR PC reset dan instruksi terakhir dalam IR akan dihapus Sinyal clock CLK dikirimkan ke semua register buffer untuk mensinkronkan operasi komputer Kata kendali 12-bit dikirimkan melalui bus kendali 12-bit Format kata kendali
Akumulator Merupakan sebuah register buffer yang menyimpan jawaban sementara (tahap intermediate) selama komputer beroperasi Akumulator mempunyai dua macam keluaran Keluaran 3-keadaan (ke bus W) Keluaran 2-keadaan (ke penjumlah-pengurang) Saat EA = ‘1’ hasil diletakkan di bus W
Penjumlah - Pengurang SAP-1 menggunakan penjumlah - pengurang komplemen-2 Jika SU rendah maka keluarannya adalah S =A+B Jika SU tinggi maka keluarannya adalah S=A+B’ Rangkaian penjumlah - pengurang bersifat asinkron (tidak diatur oleh adanya pulsa clock), jadi keluarannya akan berubah apabila terjadi perubahan input Saat EU = ‘1’, hasil keluaran akan dimuat ke bus W
Register B merupakan register buffer yang lain diantara register-register yang ada, register ini digunakan dalam operasi aritmetik Transfer dari bus W ke register B terjadi saat LB = ‘0’ dan pulsa clock naik. Keluaran register B dihubungkan dengan masukan penjumlah - pengurang, dan digunakan untuk memasukkan bilangan yang akan dikurangkan atau dijumlahkan dengan isi akumulator
Register Keluaran Pada akhir operasi komputer, akumulator berisi jawaban dari persoalan yang diselesaikan perlu dikomunikasikan dengan dunia luar Apabila EA tinggi dan LO rendah, pulsa clock positif berkutnya akan memasukkan data dari akumulator ke dalam register keluaran Register keluaran sering disebut dengan port output
Peraga Biner Berupa barisan LED yang terdiri atas 8 buah LED Setiap LED dihubungkan dengan sebuah flip-flop dari port output, maka peraga biner akan menyajikan keluaran dari port output
Perangkat Instruksi Perangkat komputer tak berguna sebelum diprogram operasinya Instruksi harus dimasukkan langkah demi langkah ke memori harus dipelajari perangkat instruksi (set instruction) Perangkat instruksi pada komputer SAP-1 terdiri dari LDA, ADD, SUB, OUT, HLT
LDA Data yang tersimpan dalam memori dapat diberi lambang R0, R1, R2, … Artinya R0 disimpan pada alamat 0H, R1 disimpan pada alamat 1H, R2 disimpan pada alamat 2H, dst Contoh: R8 = 1111 0000, alamat 8H pada memori berisi data 1111 0000 LDA merupakan singkata dari ‘Load the Accumulator’ (Isilah akumulator)
LDA Contoh: LDA 8H artinya: ‘isilah akumulator dengan isi dari lokasi memori 8H’ Jika mula-mula R8 = 1111 0000 maka eksekusi instruksi LDA 8H akan menghasilkan A = 1111 0000
ADD ADD merupakan instruksi untuk menjumlahkan antara isi akumulator dengan isi dari suatu lokasi memori Contoh: ADD 9H berarti: ‘tambahkan isi dari lokasi memori 9H dengan isi akumulator’
ADD Contoh: misal dalam akumulator sudah berisi data (2)10, dan bilangan (3)10 menempati lokasi memori 9H. Maka A = 0000 0010 R9 = 0000 0011 Saat pelaksanaan instruksi ADD 9H, akan berlangsung operasi sbb: Pertama, R9 diisikan ke register B sehingga B = 0000 0011
ADD Pada waktu yang bersamaan, rangkaian penjumlah - pengurang melakukan operasi penjumlahan dan akan menghasilkan SUM = 0000 0101 Kedua, hasil operasi penjumlahan diisikan ke dalam akumulator sehingga A = 0000 0101
SUB Mirip dengan instruksi ADD Instruksi SUB yang lengkap dilengkapi dengan alamat data yang hendak dikurangkan Contoh SUB CH, artinya: ‘kurangkan isi lokasi memori CH dari isi akumulator’, dan hasil pengurangan akan disimpan di akumulator
SUB Contoh: misal isi akumulator adalah (7)10 dan lokasi memori CH berisi data (3)10. Maka A = 0000 0111 RC = 0000 0011 Pelaksanaan instruksi SUB CH berlangsung sbb: Pertama, RC diisikan ke register B, sehingga B = 0000 0011
SUB Pada waktu yang hampir bersamaan, bagian penjumlah - pengurang melakukan operasi pengurangan dari A dan B dan menghasilkan selisih: DIFF = 0000 0100 Kedua, hasil pengurangan ini disimpan dalam akumulator, sehingga isinya menjadi: A = 0000 0100
OUT Instruksi OUT memberitahukan kepada komputer SAP-1 untuk memindahkan isi akumulator ke port output. Setelah instruksi OUT dilaksanakan, dapat dilihat jawaban dari persoalan yang diberikan melaui peraga biner yang diberikan
HLT HLT adalah singkatan dari ‘halt’ yang artinya berhenti digunakan untuk memberitahukan kepada komputer untuk berhenti memproses data
Instruksi Rujukan Memori LDA, ADD, SUB disebut dengan instruksi rujukan memori (memory-reference instruction) karena semua instruksi tersebut menggunakan data yang tersimpan dalam memori HLT dan OUT bukan merupakan instruksi rujukan memori karena instruksi tersebut tidak menggunakan data-data yang tersimpan pada memori
Mnemonic LDA, ADD, SUB, OUT, dan HLT adalah perangkat instruksi bagi SAP-1 Instruksi-instruksi singkat seperti ini sering disebut dengan mnemonic (mnemonic artinya pembantu ingatan)
Tabel Mnemonic
Pemrograman SAP-1 Untuk memasukkan instruksi dan data-data ke dalam memori SAP-1 kita harus menggunakan kode-kode tertentu yang dapat ditafsirkan komputer
Pemrograman SAP-1 Kode-kode tersebut memberitahukan kepada komputer sesuatu yang harus dilaksanakan maka kode tersebut disebut dengan operation code (opcode) Contoh pengubahan instruksi menjadi kode biner:
Pemrograman SAP-1 Dalam memori diperoleh data: Bahasa assembly berupa mnemonic Bahasa mesin berupa kode-kode biner
Siklus Pengambilan (Fetch Cycle) Unit kendali merupakan kunci dari pengoperasian komputer secara elektronik Unit kendali akan membangkitkan atau mengeluarkan kata kendali untuk mengambil dan mengeksekusi setiap instruksi Pada saat instruksi diambil dan dieksekusi, komputer akan melewati beberapa keadaan pewaktuan (timing state; T state), yaitu periode-periode waktu saat mana terjadi perubahan isi register
Pencacah Putar
Pencacah Putar Gambar tersebut merupakan pencacah lingkar dengan keluaran T = T6T5T4T3T2T1 Pada permulaan operasi lingkar menunjukkan: T = 000001 Setiap ada satu pulsa clock akan menghasilkan berturut-turut:
Pencacah Putar T = 000010 T = 000100 T = 001000 T = 010000 T = 100000 Kemudian pencacah putar direset menjadi 000001 lagi Gambar b memperlihatkan pulsa-pulsa pewaktuan yang dikeluarkan oleh pencacah melingkar
Keadaan Alamat Keadaan T1 disebut dengan keadaan alamat (address state) karena alamat di dalam PC dipindahkan ke MAR selama keadaan ini. Gambar berikut ini memperlihatkan bagian-bagian komputer yang aktif selama keadaan ini
Keadaan Alamat Selama keadaan alamat, EP dan LM merupakan bit-bit yang aktif; sedangkan bit-bit yang lain tidak aktif Selama keadaan ini, bagian pengendali mengeluarkan kata kendali
Keadaan Penambahan Keadaan T2 ini disebut dengan keadaan penambahan (increment state) karena hitungan pada PC ditambah selama periode ini.
Keadaan Penambahan Selama keadaan penambahan ini, kata kendali yang dihasilkan adalah: Bit yang aktif hanya CP
Keadaan Memori Keadaan T3 disebut dengan keadaan memori karena isi RAM dengan alamat yang ditunjuk dipindahkan dari memori ke register instruksi (IR). Gambar berikut menunjukkan bagian yang aktif
Keadaan Memori Selama keadaan ini, bit-bit yang aktif hanyalah CE dan LI, dan kata kendali yang dikeluarkan oleh bagian pengendali adalah
Siklus Pengambilan Keadaan alamat, penambahan dan memori disebut dengan siklus pengambilan (fetch cycle) dari SAP-1
Siklus Eksekusi (Pelaksanaan) Tiga keadaan berikutnya (T4, T5 dan T6) disebut dengan siklus eksekusi dari SAP-1 Transfer-transfer register yang terjadi selama siklus eksekusi tergantung pada macam instruksi yang sedang dieksekusi Contoh: LDA 9H memerlukan operasi transfer register yang berbeda dibandingkan dengan ADD 9H
Rutin LDA Anggap bahwa IR telah berisi instruksi LDA 9H, sehingga Selama keadaan T4, medan instruksi 0000 dikirim ke dalam pengendali-pengurut yang melakukan pendekodean; sedangkan medan alamat 1001 diisikan ke dalam MAR
Rutin LDA Gambar di atas adalah bagian-bagian yang aktif selama keadaan T4, bit-bit yang aktif adalah EI dan LM
Rutin LDA Selama T5, bit-bit CE dan LA menjadi rendah. Ini berarti data yang telah dialamatkan dalam memori akan diisikan ke dalam akumulator pada saat pulsa berikutnya masuk
Rutin LDA T6 adalah keadaan tanpa operasi (No operation disingkat NOP) Selama kondisi ini, semua dalam kondisi tidak aktif
Rutin LDA Berikut adalah gambar pewaktuan siklus fetch LDA
Rutin ADD Misal pada akhir siklus pengambilan, IR sudah berisi kata ADD BH, sehingga IR = 0001 1011 Selama keadaan T4, medan instruksi memasuki pengendali-pengurut dan medan alamat masuk ke MAR. Yang aktif adalah EI dan LM
Rutin ADD Saat T5, bit-bit kendali CE dan LB menjadi aktif memungkinkan terjadinya transfer operand dari RAM ke register B
Rutin ADD Saat T6, EU dan LA menjadi aktif. Dengan ini bagian penjumlah - pengurang menyiapkan akumulator.
Rutin ADD Diagram pewaktuan siklus pengambilan dan pelaksanaan rutin ADD
Rutin SUB Mirip dengan rutin ADD Yang berbeda hanya kondisi SU (bernilai tinggi) pada keadaan T6
Rutin OUT Andaikan IR berisi instruksi OUT pada akhir sebuah siklus pengambilan. Maka IR = 1110 xxxx Medan instruksi akan memasuki pengendali-pengurut untuk didekodekan. Kemudian pengendali-pengurut mengeluarkan kata kendali yang diperlukan untuk memindahkan isi akumulator ke register keluaran
Rutin OUT Gambar berikut ini menunjukkan bagian yang aktif selama eksekusi instruksi OUT Pada saat T4, karena EA dan LO aktif, maka pada pulsa clock berikutnya terjadi tansfer dari register akumulator ke register keluaran Pada keadaan T5 dan T6 tidak terjadi operasi
Rutin OUT Gambar berikut merupakan diagram pewaktuan instruksi OUT
HLT Instruksi HLT tidak membutuhkan rutin kendali karena tidak sebuahpun register yang terlibat dalam eksekusi instruksi yang bersangkutan Jika IR berisi 1111 xxxx, medan instruksi 1111 akan memberitahu pengendali-pengurut untuk memberhentikan pemrosesan data
Siklus Mesin dan Siklus Instruksi SAP-1 mempunyai 6 keadaan T (tiga untuk pengambilan dan tiga untuk eksekusi) Enam keadaan terebut disebut dengan siklus mesin
Siklus Mesin dan Siklus Instruksi Komputer SAP-1 membutuhkan satu siklus mesin untuk mengambil dan melaksanakan setiap instruksi. Clock SAP-1 mempunyai frekuensi 1 Khz, sehingga mempunyai periode 1 ms. Dengan demikian satu siklus mesin SAP-1 memerlukan waktu 6 ms. SAP-2 berbeda dengan SAP-1, karena beberapa instruksi memerlukan lebih dari satu siklus mesin untuk pengambilan dan eksekusinya
Siklus Mesin dan Siklus Instruksi Gambar di atas adalah sebuah isntruksi yang memerlukan dua siklus mesin. Tiga keadaan T yang pertama digunakan untuk pengambilan, sembilan keadaan T berikutnya digunakan untuk eksekusi. Ini disebabkan karena instruksi dua siklus mesin lebih rumit, sehingga memerlukan T ekstra untuk menyelesaikannya
Siklus Mesin dan Siklus Instruksi Siklus instruksi (Instruction Cycle) adalah jumlah keadaan T yang diperlukan guna mengambil dan melaksanakan sebuah instruksi Dalam SAP-1, siklus instruksi sama dengan siklus mesin Dalam SAP-2 dan mikrokomputer yang lain, siklus instruksi bisa sama dengan dua siklus mesin atau lebih
Mikroprogram SAP-1 Mikroprogram merupakan runtunan sinyal kendali yang dikeluarkan oleh unit pengendali - pengurut pada saat pengambilan dan eksekusi suatu instruksi Pengendali-pengurut mengirimkan kata kendali dengan laju satu kata setiap satu keadaan T. Kata tersebut merupakan pengarahan kepada komputer tentang operasi yang harus dilakukan Setiap kata kendali disebut dengan satu mikroinstruksi
Makroinstruksi Instruksi yang pernah digunakan dalam pemrograman (LDA, ADD, SUB, dll) sering disebut dengan makroinstruksi Setiap makroinstruksi dalam komputer SAP-1 terdiri dari 3 mikroinstruksi Guna menyederhanakan bentuk mikroinstruksi kadang-kadang ditulis dalam bentuk heksadesimal
Makroinstruksi
Makroinstruksi
Pengadaan Mikroprogram Cara konvensional: dengan menggunakan hardware. Kelemahan: dengan jumlah perangkat instruksi yang lebih besar, matriks kendali menjadi sangat rumit dan memerlukan banyak sekali gerbang logika. Alternatif: dengan menggunakan mikroprogramming. Gagasan: dengan menyimpan mikroprogram dalam sebuah ROM, dan bukan membangkitkannya dengan menggunakan matriks kendali
Penyimpanan Mikroprogram Dengan memberi alamat dan menyertakan rutin pengambilan, dapat dibuat tabel berikut:
Penyimpanan Mikroprogram Mikroinstruksi dapat disimpan di dalam ROM kendali lengkap, dengan rutin pengambilan pada alamat 0H sampai 2H, rutin LDA pada alamat 3H sampai 5H, rutin ADD pada alamat 6H sampai 8H, rutin SUB pada alamat 9H sampai BH, dan rutin OUT pada alamat CH sampai EH. Dalam mengakses rutin diperlukan tiga langkah: Mengetahui alamat awal dari rutin yang dimaksud Menelusuri dengan tepat semua alamat dari rutin itu Memberikan alamat kepada ROM kendali
ROM Alamat Gambar berikut menunjukkan mikroprogramming bagi komputer SAP-1
ROM Alamat Dalam sistem ini terdapat sebuah ROM alamat, sebuah pencacah yang dapat dipreset, dan ROM kendali ROM alamat mengandung alamat awal dari setiap rutin
ROM Alamat Bit-bit opcode I7I6I5I4 akan menggerakkan ROM alamat. Jika instruksi ADD sedang dilaksanakan, maka I7I6I5I4 menujukkan 0001. Ini merupakan masukan kepada ROM alamat, dan keluaran ROM alamat adalah 0110
Pencacah Yang Dapat Dipreset Saat T3 tinggi, maka pencacah akan mengisikan alamat awal yang berasal dari ROM alamat Saat komputer bekerja, keluaran pencacah menunjukkan 0000 selama keadaan T1, 0001 selama keadaan T2, 0010 selama keadaan T3 setiap kali terjadi siklus pengambilan
Pencacah Yang Dapat Dipreset Opcode yang sudah masuk dalam IR akan mengendalikan siklus eksekusi. Jika instruksi ADD telah diambil, bit-bit I7I6I5I4 sama dengan 0001 Bit-bit tersebut akan menggerakkan ROM alamat menghasilkan 0110. Alamat ini merupakan masukan ke pencacah Ketika T3 menjadi tinggi, saat clock turun berikutnya akan mengisikan 0110 ke dalam pencacah, sehingga pencacah dalam kondisi preset
Pencacah Yang Dapat Dipreset Keluaran pencacah akan dalam keadaan 0110 selama keadaan T4, 0111 selama dalam keadaan T5, dan 1000 selama keadaan T6 instruksi ADD dilaksanakan Saat T1, pencacah akan dalam kondisi reset dan kembali ke 0000
ROM Kendali ROM kendali menyimpan mikroinstruksi SAP-1 Selama berlangsungnya siklus pengambilan, ROM kendali menerima masukan alamat 0000, 0001, dan 0010. Karena itu keluarannya adalah berupa mikroinstruksi 5E3H, BE3H, dan 263H Selama sebuah instruksi ADD dilaksanakan, ROM kendali menerima alamat 0110, 0111, dan 1000, sehingga menghasilkan keluaran mikroinstruksi berturut-turut adalah 1A3H, 2E1H, 3C7H
Siklus Mesin Variabel Mikroinstruksi 3E3H menyatakan nop. Keadaan nop dapat dipakai SAP-1 untuk mendapatkan siklus mesin yang tetap bagi semua instruksi. Apabila kecepatan diutamakan mengakibatkan banyak pemborosan waktu Cara mempercepat eksekusi: dengan mendeteksi adanya nop dan kemudian mereset pencacah lingkar, sehingga langsung ke keadaan T1
Siklus Mesin Variabel
Siklus Mesin Variabel Untuk instruksi LDA, operasi tetap sama dari T1 sampai T5. Saat T6 dimulai ROM kendali menghasilkan keluaran mikroinstruksi nop atau 3E3H. Gerbang NAND akan mendeteksi keadaan nop ini dan akan mengaktifkan sinyal NOP Sinyal NOP ini kemudian mereset pencacah lingkar menuju ke keadaan T1 Operasi tersebut mengurangi instruksi LDA dari 6 keadaan menjadi 5 keadaan saja