Accumulator (ACCU)
6.2.4. Accumulator (ACCU)
Accumulator (yang disingkat menjadi accu) adalah tingkatan selanjutnya dari ALU. Berikut adalah gambar accumulator dengan carry flag. Terpisah dari fungsi yang telah ditunjukkan pada gambar3.11 rangkaian ini terdiri atas register dan carry flag sebagai komponen tambahan yang penting. Register menyediakan memory penyangga untuk hasil yang dikeluarkan nanti. Untuk mencapai tujuan ini salah satu masukan pada ALU disambungkan ke keluaran register yang juga merupakan keluaran hasil operasi (feedback). Informasi yang ada di masukan B sekarang dikombinasikan dengan keluaran yang dihasilkan register. Hasil yang dikeluarkan oleh ALU di simpan pada register oleh pulsa clock. Pada tahap ini data yang ada pada register sebelumnya akan hilang. Untuk menghindari kemungkinan munculnya carry yang hanya sesaat saja maka keluaran carry ini disimpan pada suatu flag. Clock pada flag ini
berdasarkan bit tambahan S8 dalam ROM (fungsi gerbang AND pada Gambar 3.12 ). Hal ini hanya perlu bila carry ini dikeluarkan oleh fungsi ALU. Fungsi yang akan diproses oleh accumulator ini ditampilkan pada tabel 3.3. Untuk kombinasi U3 sampai dengan U0 = 0101 fungsi operasi keluaran adalah A+1. Karena adanya umpan balik untuk masukan A, maka besarnya A bergantung pada isi yang ada di register saat itu. Dengan instruksi A + 1 ini, isi accumulator ini akan bertambah 1 tiap satu clock. Dengan kombinasi kontrol seperti ini accumulator disini akan berfungsi sebagai counter. Jika counter dikehendaki sebagai counter down, maka isntruksi yang harus diberikan adalah dengan mengataur kombinasi U3 sampai dengan U0 = 0110 dan fungsi A -1 akan dilakukan.
Gambar 6.17 Accumulator dengan carry flag
Tabel 6.6 Tabel fungsi accumulator
U3 U2 U1 U0 Singkatan Fungsi Carry Flag
0 0 0 0 NOP
No operation
ya
0 0 0 1 SP1
Set accu = 1
ya
0 0 1 0 CMA
Complement accu
tidak
0 0 1 1 LDA
Load B into accu
tidak
0 1 0 0 CLA
Clear accu
tidak
0 1 0 1 INC
Increment accu
ya
0 1 1 0 DEC
Decrement accu
ya
0 1 1 1 ADD
Add B into accu
ya
1 0 0 0 SUB
Substract B from accu ya
1 0 0 1 AND
Accu AND B into accu ya
1 0 1 0 IOR
Accu OR B into accu ya
1 0 1 1 XOR
Accu XOR B into accu ya
1 1 0 0 SM1
Set accu = -1
ya
Pada kolom carry flag dapat dilihat kapan carry flag ini keluar pada saat di clock. Pada banyak mikroprosesor flag ini juga di clock untuk operasi logika. Selama tidak ada carry yang dihasilkan oleh ALU, flag ini akan di- clear.
Jika suatu fungsi sangat rumit akan diproses oleh accumulator, maka fungsi ini haraus dibagi menjadi operasi-operasi yang lebih sederhana. Untuk operasi ini diperlukan beberapa siklus.
Sebagai contoh masalah perkalian untuk menghitung 3 · B yang mana B adalah data masukan dari saklar. Selama tidak ada fungsi perkalian maka akan diperlukan berepa fungsi yang dasar yang sederhana.
Oleh karena itu kita harus membuat langkah (program) yang harus dilakukan untuk memecahkan masalah perkalian tersebut seperti ditunjukkan beikut ini :
Urutan Instruksi Keterangan langkah
1 LDA Isi accumulator dengan data dari masukan B
2 ADD Tambahkan isi accumulator dengan data dari masukan B
3 ADD Tambahkan isi accumulator dengan data dari masukan B
Dalam prakteknya implementasi program di atas adalah sebagai berikut :
1. Siapkan data masukan B
2. Siapkan data kontrol LDA dengan mengatur U3 = 0, U2 = 0, U1 = 1 dan U0 = 1
3. Beri pulsa clock
4. Siapkan data kontrol ADD dengan mengatur U3 = 0, U2 = 1, U1 = 1 dan U0 = 1
5. Beri pulsa clock
6. Siapkan data kontrol ADD dengan mengatur U3 = 0, U2 = 1, U1 = 1 dan U0 = 1
7. Beri pulsa clock
Instruksi pertama LDA menyebabkan data masukan B masuk ke akumulator dengan pulsa clock. Instruksi kedua ADD setelah pulsa clock diberikan akan menghasilkan isi accu sebelumnya ditambah masukan B.
Sekarang B sudah ditambahkan pada isi Accu. B + B akan terbentuk. Dengan fungsi kontrol yang sama, pemberian pulsa clock selanjutnya dibutuhkan untuk menambah B sekali lagi untuk hasil B+B. Sehingga Accumulator akan menghasilkan nilai 3 ⋅ B
Dengan memilih kombinasi instruksi kontrol yang tepat, maka ekspresi yang sulit akan dapat dihitung.