Rabu, 14 Mei 2014

STRUKTUR DAN FUNGSI CPU



Hal-hal yang perlu dilakukan CPU adalah :
  1. Fetch Instruction / mengambil instruksi : CPU harus membaca instruksi dari memori.
  2. Interpret Instruction / menerjemahkan instruksi : instruksi harus didekode untuk menentukan aksi apa yang diperlukan.
  3. Fetch Data / mengambil data : eksekusi suatu instruksi mungkin memerlukan pembacaan data dari memori atau modul I/O.
  4. Process Data / mengolah data : eksekusi suatu instruksi mungkin memerlukan operasi aritmetika atau logika terhadap data.
  5. Write Data / menulis data : hasil eksekusi mungkin memerlukan penulisan data ke memori atau modul I/O.




Organisasi Register


Organisasi register meliputi jenis-jenis register di bawah ini :

  • General : terdapat 8 buah register general-purpose 32-bit. Register-register ini dapat digunakan untuk semua jenis instruksi Pentium; register-register ini juga dapat menampung operand-operand untuk keperluan kalkulasi alamat. Selain itu, sebagian dari register-register ini juga melayani keperluan-keperluan tertentu. Misalnya : kalkulasi untai menggunakan isi register-register ECX, ESI dan EDI sebagai operand tanpa harus mereferensi register-register ini secara eksplisit di dalam instruksi. Akibatnya, sejumlah instruksi dapat di-enkode lebih ringkas.
  • Segment : keenam register segmen 16-bit berisi pemilih segmen, yang diindex ke dalam tabel segmen. Register code segment (CS) mereferensi segmen yang berisi instruksi yang sedang dieksekusi. Register stack segment (SS) mereferensi segmen yang berisi user-visible stack. Register-register segmen lainnya (DS, ES, FS, GS) mengizinkan pengguna untuk mereferensi hingga empat buah segmen data yang berlainan sekaligus.
  • Flags : register EFLAG berisi kode kondisi (persyaratan) dan bermacam-macam bit mode.
  • Instruction Pointer : berisi alamat instruksi saat itu.

Terdapat juga register-register yang secara khusus ditujukan bagi unit floating point : 
  • Numeric : semua register menampung bilangan floating point 80 bit extended-precision. Terdapat 8 buah register yang berfungsi sebagai suatu stack, yang pada register-register ini operasi-operasi push dan pop-nya dapat diperoleh di dalam set instruksi.
  • Control : register control 16-bit berisi bit-bit yang mengontrol operasi unit floating point, termasuk jenis kontrol pembulatan ; single atau double extended precision ; dan bit-bit untuk mengizinkan atau tidak mengizinkan bermacam-macam kondisi pengecualian.
  • Status : register status 16-bit berisi bit-bit yang merefleksikan status unit floating point saat itu, termasuk pointer 3-bit ke puncak stack ; kode kondisi yang melaporkan hasil operasi terakhir ; exception flags.
  • Tag word : register 16-bit ini berisi tag 2-bit bagi semua register numerik floating point, yang mengindikasikan sifat-sifat isi register yang berkaitan. Keempat nilainya adalah valid, nol, special (NaN, infinity, denormalized) dan kosong. Tag-tag ini mengizinkan program untuk memeriksa isi register numerik tanpa melakukan pendekodean yang kompleks terhadap data sebenarnya yang terdapat di dalam register.



Register EFLAG


Mengindikasikan kondisi processor dan membantu pengontrolan operasinya. Register ini meliputi 6 buah kode kondisi yang didefinisikan dalam carry, parity, auxiliary, nol, sign, overflow, yang melaporkan hasil operasi integer. Selain itu, terdapat bit-bit dalam register yang dapat disebut sebagai bit-bit kontrol, yaitu :
  • Trap Flag (TF) : apabila disetel, akan menyebabkan interrupt setelah semua instruksi. Flag ini digunakan untuk debugging.
  • Interrupt Enable Flag (IF) : apabila disetel, processor akan mengetahui interrupt-interrupt eksternal.
  • Direction Flag : menentukan apakah instruksi pengolahan string menambah atau mengurangi half-register SI dan DI 16-bit atau register ESI dan EDI 32-bit.
  • I / O Privilege Flag (IOPL)
  • Resume Flag (RF)
  • Alignment Check (AC)
  • Identification Flag (ID)
Sistem komputer menggunakan hirarki memori. Pada tingkatan yang atas, memori lebih cepat, lebih kecil dan lebih mahal (per bit). Di dalam CPU, terdapat sekumpulan register yang tingkatan memorinya berada di atas hirarki memori utama dan cache. Register pada CPU memiliki 2 fungsi :

1. User-visible Registers : register ini memungkinkan pemrogram bahasa mesin dan bahasa assembler meminimalkan referensi main memori dengan cara mengoptimasi penggunaan register. Register ini adalah register yang dapat direfensikan dengan menggunakan bahasa mesin yang dieksekusi CPU. 

Secara virtual semua rancangan CPU modem memiliki sejumlah user-visible register, yang merupakan kebalikan akumulator tunggal. Kita dapat membedakannya dengan kategori-kategori berikut ini :
  • Register General Purpose
  • Register Data
  • Register Alamat
  • Register Kode-kode Kondisi
General-Purpose register dapat di-assign ke berbagai fungsi oleh pemrogram. General-Purpose register dapat berisi operand sembarang opcode. Dapat digunakan untuk fungsi-fungsi pengalamatan (mis: register indirect, displacement).

Register Data hanya dapat dipakai untuk menampung data dan tidak dapat digunakan untuk kalkulasi dan alamat operand.

Register alamat menyerupai general-purpose register, atau register-register tersebut dapat digunakan untuk mode pengalamatan tertentu. Contohnya :
  • Segment pointer => pada sebuah mesin yang memiliki pengalamatan bersegmen, register segmen menyimpan alamat basis segmen.
  • Register index => register ini digunakan untuk alamat-alamat yang terindeks dan mungkin autoindexed.
  • Stack pointer => apabila terdapat pengalamatan stack yang user-visible, maka biasanya stack berada di dalam memori dan terdapat register dedicated yang menunjuk ke bagian atas stack. Hal ini memungkinkan pengalamatan implisit, yaitu : push, pop dan instruksi stack lainnya tidak perlu operand stack eksplisi.
Register yang harus menampung alamat sedikitnya harus dapat menampung alamat yang terpanjang. Register-register data harus dapat menampung nilai-nilai sebagian besar jenis data.
Register kode-kode kondisi adalah bit-bit yang disetel perangkat keras CPU sebagai hasil operasi.


2. Control and Status Registers : register-register ini digunakan oleh unit kontrol untuk mengontrol operasi CPU dan oleh program sistem operasi untuk mengontrol eksekusi program. Terdapat 4 macam register yang penting bagi eksekusi instruksi :
  • Program Counter (PC) atau pencacah program : berisi alamat instruksi yang akan diambil.
  • Instruction Register (IR) : berisi instruksi yang terakhir diambil.
  • Memori Address Register (MAR) : berisi alamat sebuah lokasi di dalam memori.
  • Memori Buffer Register (MBR) : berisi sebuah word data yang akan dituliskan ke dalam memori atau word yang terakhir dibaca.
Program counter berisi alamat instruksi. Umumnya program counter di-update oleh CPU setiap kali mengambil instruksi sehingga program counter selalu menunjuk ke instruksi berikutnya yang akan dieksekusi.

MAR terhubung langsung dengan bus alamat, sedangkan MBR terhubung langsung dengan bus data. Pada saatnya, user-visible register bertukar data dengan MBR.

Keempat register yang dibahas di atas digunakan untuk perpindahan data di antara CPU dengan memori. Di dalam CPU, data harus diberikan ke ALU untuk diproses lebih lanjut. ALU dapat memiliki akses langsung ke MBR dan user-visible register. Akan tetapi mungkin juga terdapat register buffering lainnya pada batas ALU, register-register ini berfungsi sebagai register input dan output bagi ALU dan pertukaran data dengan MBR dan user-visible register.

Semua rancangan CPU mencakup sebuah register atau sekumpulan register, sering kali disebut program status word (PSW), yang berisi informasi status. Biasanya PSW berisi kode kondisi dan informasi status lainnya. Common field atau flag meliputi hal-hal berikut ini :
  • Sign : berisi bit tanda hasil operasi aritmetika terakhir.
  • Zero : disetel bila hasil sama dengan nol.
  • Carry : disetel bila operasi yang dihasilkan di dalam carry (penambahan) ke dalam bit yang lebih tinggi atau borrow (pengurangan) dari bit yang lebih tinggi. Digunakan untuk operasi aritmetika multiword.
  • Equal : disetel bila hasil pembandingan logikanya sama.
  • Overflow : digunakan untuk mengindikasikan overflow aritmetika.
  • Interrupt Enable/Disable : digunakan untuk mengizinkan atau mencegah interrupt.
  • Supervisor : mengindikasikan apakah CPU sedang mengeksekusi dalam mode supervisor atau mode user. Instruksi privileged tertentu hanya dapat dieksekusi dalam mode supervisor saja dan daerah-daerah tertentu di dalam memori hanya dapat diakses dalam mode supervisor saja.
Terdapat beberapa register lainnya yang berkaitan denga status dan kontrol yang dapat ditemukan di dalam rancangan CPU tertentu. Selain PSW, mungkin terdapat suatu pointer ke blok memori yang berisi informasi status tambahan. Pada mesin yang memakai interrupt bervektor, dapat disediakan register vektor interrupt. Apabila stack digunakan untuk mengimplementasikan fungsi-fungsi tertentu, maka diperlukan stack pointer sistem. Register juga dapat digunakan dalam pengontrolan operasi I/O.




Siklus Instruksi (Instruction Cycle)


Sebuah siklus instruksi meliputi subsiklus-subsiklus berikut ini :

     
  • Fetch : membaca instruksi berikutnya dari memori ke dalam CPU.
  • Execute : menginterpretasikan opcode dan melakukan operasi yang diindikasikan.
  • Interrupt : apabila interrupt diaktifkan dan interrupt telah terjadi, simpan status proses saat itu dan layani interrupt.


Siklus Tak Langsung


Eksekusi sebuah instruksi melibatkan sebuah operand atau lebih di dalam memori, yang masing-masing operand memerlukan akses memori. Kemudian, apabila digunakan pengalamatan tak langsung, maka diperlukan akses memori tambahan.





Aliran Data


Urutan kejadian selama siklus instruksi berlangsung tergantung pada rancangan CPU. Asumsikan sebuah CPU yang menggunakan register memori alamat (MAR), register memori buffer (MBR), pencacah program (PC) dan register instruksi (IR).

Pada saat siklus pengambilan (fetch cycle), instruksi dibaca dari memori. Siklus pengambilan dan siklus tak langsung cukup sederhana dan dapat diramalkan. Siklus instruksi (instruction cycle) mengambil banyak bentuk karena bentuk tergantung pada bermacam-macam instruksi mesin yang terdapat di dalam IR. Siklus ini dapat meliputi pemindahan data di antara register-register, pembacaan atau penulisan dari memori atau I/O dan penggunaan ALU. Siklus interrupt (interrupt cycle) juga cukup sederhana dan juga dapat diramalkan.



Pipelining Instruksi


Proses pipelining => proses dimana input baru akan diterima pada sebuah sisi sebelum input yang diterima sebelumnya keluar sebagai output di sisi lainnya. Pipeline memiliki dua tahapan yang independen. Tahapan pertama mengambil instruksi dan mem-buffer-kannya. Ketika tahapan kedua bebas, tahapan pertama mengirimkan instruksi yang di-buffer-kan tersebut. Pada saat tahapan kedua sedang mengeksekusi instruksi, tahapan pertama memanfaatkan siklus memori yang tidak dipakai untuk mengambil dan membufferkan instruksi berikutnya. Proses ini disebut instruction prefetch atau fetch overlap.

Penggandaan kecepatan eksekusi tidak akan terjadi karena adanya kedua alasan berikut ini:
  • Umumnya waktu eksekusi akan lebih lama dibandingkan dengan pengambilan instruksi. Eksekusi akan meliputi pembacaan dan penyimpanan operand serta kinerja sejumlah operasi. Sehingga tahapan pengambilan mungkin perlu menunggu beberapa saat sebelum mengosongkan buffer-nya.
  • Instruksi pencabangan bersyarat akan membuat alamat instruksi berikutnya yang akan diambil tidak diketahui. Sehingga tahapan pengambilan harus menunggu sampai menerima alamat instruksi berikutnya dari tahapan eksekusi. Dengan demikian tahapan eksekusi harus menunggu pada saat instruksi berikutnya diambil.

Kerugian waktu yang diakibatkan tahapan kedua dapat dikurangi dengan cara menebak. Aturan sederhananya adalah sebagai berikut : ketika instruksi pencabangan bersyarat dikirimkan dari tahapan pengambilan ke tahapan eksekusi, tahapan pengambilan mengambil instruksi berikutnya di dalam memori setelah terjadinya instruksi pencabangan itu. Kemudian apabila pencabangan tidak dilakukan, maka tidak akan terdapat waktu yang hilang. Apabila pencabangan dilakukan, instruksi yang diambil harus dibuang dan instruksi yang baru harus diambil.
Dekomposisi pengolahan instruksi :
  • Fetch instruction (FI) : membaca instruksi berikutnya yang diharapkan ke dalam buffer.
  • Decode instruction (DI) : menentukan opcode dan operand specifier.
  • Calculate operand (CO) : menghitung alamat efektif seluruh operand sumber. Hal ini mungkin melibatkan displacement, register indirect, indirect atau bentuk kalkulasi alamat lainnya.
  • Fetch operand (FO) : mengambil semua operand dari memori. Operand-operand yang berada di dalam register tidak perlu diambil.
  • Execute instruction (EI) : melakukan operasi yang diindikasikan dan menyimpan hasilnya, bila ada, di lokasi operand tujuan yang telah ditentukan.
  • Write operand (WO) : menyimpan hasilnya di dalam memori.



Menangani Pencabangan


Salah satu masalah besar dalam merancang pipeline instruksi adalah menjamin terjadinya aliran instruksi yang stabil bagi tahapan awal pipeline. Telah dilakukan beberapa pendekatan yang berhubungan dengan pencabangan bersyarat :
  • Multiple Streams
Sebuah pendekatan yang kasar adalah dengan melakukan peniruan bagian pipeline awal dan membiarkan pipeline untuk mengambil kedua instruksi itu, dengan menggunakan dua buah stream, Terdapat beberapa masalah yang terjadi dalam menggunakan pendekatan ini :
  1. Pada multiple pipelines terdapat delay akibat adanya persaingan untuk mengakses register dan memori.
  2. Instruksi pencabangan tambahan mungkin masuk ke pipeline atau stream sebelum pengambilan keputusan pencabangan yang sebenarnya dilakukan. Semua instruksi ini memerlukan stream tambahan.

  • Prefetch Branch Target
Bila pencabangan bersyarat telah diketahui, maka selain terhadap instruksi yang berada setelah pencabangan dilakukan juga prefetch terhadap target pencabangan itu. Kemudian target itu disimpan hingga instruksi pencabangan selesai dieksekusi. Apabila pencabangan dilakukan, maka target telah di-prefetch.

  • Loop Buffer
Merupakan memori berukuran kecil yang berkecepatan tinggi yang digunakan oleh tahapan pengambilan instruksi pipeline dan berisi n buah instruksi yang paling baru diambil secara berurutan.
Loop buffer memiliki 3 kelebihan :
  1. Pada penggunaan prefetching, loop buffer akan berisi beberapa instruksi sekuensial yang berada di depan alamat pengambilan instruksi saat itu. Jadi instruksi yang diambil secara berurutan akan diperoleh tanpa memerlukan waktu akses memori yang biasa.
  2. Apabila pencabangan terjadi dengan target yang hanya terletak beberapa lokasi di depan alamat instruksi pencabangan, maka target akan telah berada di dalam buffer. Hal ini sangat berguna bagi keberadaan rangkaian IF-THEN dan IF-THEN-ELSE.
  3. Strategi ini sangat cocok terutama bagi pencabangan atau iterasi, karena itu dinamakan loop buffer. Apabila loop buffer cukup besar untuk diisi seluruh instruksi yang terdapat dalam loop, maka instruksi-instruksi itu perlu diambil dari memori sekaligus, yaitu pada iterasi petama. Untuk iterasi berikutnya, maka instruksi-instruksi yang dibutuhkan telah terdapat di dalam buffer.

  • Branch Prediction 
Macam-macam teknik yang dapat digunakan untuk memprediksi apakah suatu pencabangan akan dilaksanakan atau tidaknya, yaitu :
  • Predict Never Taken 
  • Predict Always Taken
  • Predict by Opcode
  • Taken / Not Taken Switch
  • Branch History Table
Tiga teknik pertama bersifat statik : teknik-teknik itu tidak bergantung pada sejarah eksekusi sampai dengan waktu instruksi pencabangan bersyarat terjadi. Sedangkan dua teknik terakhir bersifat dinamik : tergantung pada sejarah eksekusi.

  • Delayed Branch
Kinerja pipeline dapat ditingkatkan dengan cara pengaturan kembali instruksi secara otomatis, sehingga instruksi pencabangan terjadi lebih lambat daripada apa yang diinginkan. 



8 komentar:

  1. Misi gan, izin share ya...
    Kami menjual MOTHERBOARD FOR AMD

    ECS A58F2P-M4 int VGA + HDMI + SC + LAN utk AMD FM2+
    Price Rp 608.000

    SPESIFIKASI

    CPU
    Supports AMD FM2 socket for AMD A series, E Series processors
    5 Phase Thermal Design Power
    Solid Capacitor for CPU side
    Support AMD TDP 125W 6-core processors

    CHIPSET
    AMD A58 chipset

    GRAPHICS
    Supports DirectX 11

    MEMORY
    Dual-channel DDR3 Memory architecture
    Supports DDR3 1866*/1800/1600/1333/1066 non-ECC, Un-buffered SDRAM Memory
    2 X 240-pin DDR3 DIMM socket
    Support up to 32 GB*
    * Due to the operation system limitation, the actual memory size may be less than 4GB for the reservation for system usage under Windows 32-bit OS. For Windows 64-bit OS with 64-bit CPU, there is no such limitation
    * Due to AMD CPU spec limitation, please refer to Memory QVL for more information.

    EXPANSION SLOT
    1 X PCI Express X16 Gen 3.0 slot(s)
    1 X PCI Express X 1 Gen 3.0slot(s)
    *FM2+ APU support PCI Express Gen3, FM2 APU support PCI Express Gen2.

    STORAGE
    4 X Serial ATAII 3Gb/s
    Located in SATA2 Port
    RAID0, RAID1,RAID10 configurationKunjungi web kami untuk produk lainnya

    Pusat Belanja Komputer

    Terimakasih :)

    BalasHapus
  2. Nice post ! Thanks for sharing and greetings from walisongo.ac.id

    BalasHapus
  3. Nice post ! Thanks for sharing and greetings from walisongo.ac.id

    BalasHapus