500 likes | 654 Views
CMPD 114 : Chapter 6 (taken from 4 th edition). Pipelining Konsep Asas Instruction Queue Arahan Cabang (Branching) Kebergantungan Data (Data Dependency ). Konsep Asas. Pipelining banyak digunakan dalam komputer-komputer moden untuk mencapai prestasi yang tinggi.
E N D
CMPD 114 : Chapter 6 (taken from 4th edition) Pipelining • Konsep Asas • Instruction Queue • Arahan Cabang (Branching) • Kebergantungan Data (Data Dependency )
Konsep Asas • Pipelining banyak digunakan dalam komputer-komputer moden untuk mencapai prestasi yang tinggi. • Konsep ini memperkenalkan bagaimana perkakasan-perkakasan untuk melaksanakan arahan disusun agar lebih dari satu operasi boleh dilakukan pada masa yang sama. Jadi dengan itu bilangan operasi yang dilakukan persaat akan meningkat dan ini akan meningkatkan prestasi sesebuah komputer.
. . . F1 E1 F2 E2 F3 E3 • Perlaksanaan setiap arahan oleh pemproses dilakukan dalam 2 fasa/stage iaitu Fetch (F) dan Execute (E). • Sekiranya perlaksanaan secara berjujukan dilakukan, hanya satu fasa dapat dilaksanakan pada satu masa. Ini adalah kerana perkakasan yang digunakan untuk melakukan kedua-dua fasa ini adalah unit perkakasan yang sama. Sequential Execution
Instruction fetch unit Execution unit • Sekiranya unit perkakasan yg berasingan digunakan untuk setiap fasa dan terdapat satu intermediatestorage buffer antara keduanya, maka pemprosesan selari dapat dilakukan. Inilah yang dikatakan pipelining. Storage buffer B1 Hardware Organization
Arahan yg dicapai oleh Fetch unit dari memori utama akan dimasukkan ke dalam B1. • Hasil perlaksanaan arahan yang dilakukan oleh Execute unit dihantar ke lokasi destinasi yg telah ditentukan oleh arahan. • Susunan perkakasan yg mempunyai 2 unit seperti di atas dipanggil 2-stage pipeline. • Perlaksanaan selari yang berlaku adalah seperti gambarajah berikut:
Clock Cycle Instruction 1 2 3 4 F1 F2 F3 E1 E2 E3 I1 I2 I3 Pipeline Organization • Dalam clock cycle 1, Fetch unit mencapai arahan pertama iaitu I1 dan memasukkan hasilnya ke B1. • Dalam clock cycle ke-2, Fetch unit mencapai arahan kedua pula iaitu I2. Pada masa yang sama, Execute unit mengambil I1 dari B1 dan melakukan operasi yang ditentukan oleh I1.
Dalam clock cycle ke-3, Fetch unit mencapai arahan ke-3, I3. Pada masa yg sama, Execute unit melakukan operasi ke atas I2. • Melalui cara ini, hanya 4 clock cycle diperlukan untuk melaksanakan 3 arahan jika dibandingkan dengan cara berjujukan yang memerlukan 6 clock cycle. • Walaubagaimanapun, perlaksanaan pipeline biasanya tidak hanya membahagikan fasa/stage kepada 2 sahaja seperti contoh di atas.
Biasanya pemproses pipeline memproses setiap arahan dalam 4 fasa/stages iaitu: F : Fetch - membaca arahan dari memori. D : Decode - menyahkod arahan dan mencapai operand sumber. E : Execute - melakukan operasi yang ditentukan oleh arahan. W : Write - menyimpan hasil operasi ke lokasi yang dikehendaki.
Fetch unit F Decode unit D Execute unit E Write unit W B1 B2 B3 • Ini bermakna 4 unit perkakasan berasingan dan 3 intermediate storage buffer yg berkeupayaan untuk melakukan tugas secara selari diperlukan. Storage buffer Hardware organization for four-stage pipeline
1 5 6 2 3 7 4 F1 E1 E2 F2 E3 F4 E4 F3 W2 W4 D4 D1 D3 W1 D2 W3 Clock Cycle Instruction I1 I2 I3 I4 • Sebagai contoh, terdapat 4 arahan I1, I2, I3 dan I4 yang akan dilaksanakan oleh sebuah pemproses pipeline 4-fasa. Instruction execution divide into four steps
Pada clock cycle ke-4, ke empat-empat arahan sedang diproses mengikut fasa masing-masing. Ini bermakna, pemproses pipeline 4-fasa boleh melakukan 4 tugas dalam satu-satu masa. • Oleh kerana setiap unit melakukan tugas yg berbeza, maka beberapa storage buffer diperlukan untuk menyimpan sementara data yg dihantar oleh satu fasa ke fasa yg berikutnya. • Bagi contoh tadi, pada clock cycle ke-4, kandungan buffer B1, B2 dan B3 adalah seperti berikut:
B1 : memegang arahan I3, yg dicapai pada clock cycle ke 3. B2 : memegang operand sumber dan operasi yang diperlukan oleh I2. Ia juga memegang maklumat seperti lokasi destinasi yang diperlukan untuk fasa Write bagi I2. Maklumat ini tidak diperlukan oleh fasa 3 tetapi maklumat ini perlu diberi kepada fasa 4 pada clock cycle seterusnya untuk melakukan operasi Write. B3 : memegang hasil operasi dan maklumat destinasi bagi I1. • Dengan menggunakan pemproses pipeline 4-fasa, kadar arahan yang dilaksanakan adalah 4 kali ganda dari pemprosesan secara berjujukan.
Walaupun untuk setiap fasa telah diberikan masa sebanyak 1 clock cycle untuk melakukan tugasnya, terdapat kemungkinan masa 1 clock cycle tersebut tidak mencukupi bagi sesetengah operasi yang kompleks seperti operasi arithmetik dan logik ataupun yg melibatkan capaian ke memori utama tetapi berlaku cache miss.
Fasa Execute utk I2 memerlukan 3 clock cycle untuk dilakukan (iaitu dari 4 hingga 6) • jadi, dalam clock cycle ke 5 dan 6, fasa Write utk I2 tidak dapat melakukan tugasnya kerana tidak ada data baru dalam B3 yang diperlukannya. • Pada masa yang sama, maklumat dalam B2 mestilah dikekalkan sehingga fasa Execute untuk I2 selesai. • Ini bermakna, fasa Decode utk I3 dan fasa Fetch utk I4 juga tidak dapat dilakukan kerana maklumat dalam B1 tidak boleh diganti lagi melalui operasi Fetch yang baru.
Secara amnya, kandungan B1, B2 dan B3 mestilah ditukar pada hujung clock cycle yang sama. • Oleh sebab itu langkah D3 dan F4 juga tidak boleh diselesaikan sehingga clock cycle ke-6. • Operasi pipeline ini dikatakan stalled (tertangguh) untuk 2 clock cycled
Kegunaan Memori Cache dalam Pipeline. • Bagi mengelakkan pipeline stalled (tertangguh), panjang masa bagi satu clock cycle haruslah mencukupi untuk menyelesaikan tugas yang dilakukan oleh sesuatu fasa. • Ini penting terutamanya bagi langkah pertama iaitu capaian arahan oleh Fetch unit, kerana masa capaian ke memori utama lebih lama berbanding dengan masa yang diperlukan untuk melakukan operasi pipeline yang lain dalam pemproses.
Penggunaan cache sedikit sebanyak dapat mengurangkan masalah ini kerana cache dapat mempercepatkan capaian ke memori utama. • Sekiranya primary cache yang diletakkan pada cip yg sama dengan pemproses digunakan, maka masa capaian ke cache adalah sama dengan masa yg diperlukan untuk melakukan operasi lain dalam pemproses. • Walaupun cache digunakan, masalah pipelinestalled masih boleh berlaku sekiranya terjadi cache miss.
1 2 3 4 F1 D1 Clock Cycle Instruction 5 6 7 8 9 I1 E1 W1 I2 F2 D2 E2 W2 I3 F3 D3 E3 W3 • Contoh : Figure 8.4 (a) Instruction execution steps in successive clock cycles
1 2 3 4 Clock Cycle Stage 5 6 7 8 9 F1 F2 F2 F2 F3 F2 F: Fetch D: Decode D1 E1 idle idle idle idle idle idle E2 D2 E3 D3 E: Execute W: Write W1 idle idle idle W2 W3 Figure 8.4 (b) Function performed by each stage as a function of time
Dalam clock cycle 1, arahan I1 dicapai dari cache. • Dalam clock cycle 2, arahan I2 pula dicapai dari cache tetapi cache miss berlaku. Fetch unit terpaksa menunggu sehingga I2 berjaya dicapai. Andaikan I2 dapat dicapai dan dimasukkan ke B1 pada clock cycle ke-5. • Oleh kerana pipeline stalled berlaku sebanyak 3 clock cycle, maka Decode unit adalah idle dari clock cycle 3 hingga 5, Execute unit dari 4 hingga 6 dan Write unit dari 5 hingga 7. • Masa idle ini dipanggil bubble dalam pipeline.
Kekangan Kebergantungan Arahan dalam Pipeline. • Dalam pipeline, perlaksanaan arahan yg berikutnya akan dilakukan walaupun arahan yg sebelumnya belum tamat. • Sekiranya arahan yang berikutnya bergantung kepada arahan yg sebelumnya, maka hasil perlaksanaan arahan yg berikutnya tidak akan mendapat hasil yg tepat. • Contoh: jika A = 5 I1 : A 3 + A Jawapan betul B =32 I2 : B 4 x A Jawapan salah B = 20
Oleh kerana arahan I2 bergantung kepada hasil I1, maka kedua-dua arahan tersebut tidak boleh dilakukan serentak. • Untuk memastikan hasil perlaksanaan setiap arahan adalah betul, dua operasi yang bergantungan antara satu sama lain tidak boleh dilakukan secara selari. • Ini bermakna, operasi Fetch arahan mestilah tidak bergantung kepada hasil perlaksanaan arahan yang sebelumnya.
Figure 8.6. Pipeline stalled by data dependency between D2 and W1. • Contoh: Mul R2, R3, R4 Add R5, R4, R6
Hasil perlaksanaan arahan Mul (Multiply) akan disimpan dalam R4 dan akan digunakan pula oleh arahan Add sebagai operand sumber. • Jadi langkah D2 tidak dapat dilakukan selagi langkah W1 tidak tamat. • Pipeline akan stalled (tertangguh) selama 2 clock cycle (4 hingga 5). • Dalam kes yg melibatkan branch, alamat di mana arahan yg berikutnya akan dicapai bergantung kepada hasil perlaksanaan arahan branch.
Kebergantungan Data(to overcome data dependency problem) • Kebergantungan data (data dependacy) bermaksud perlaksanaan arahan yang berikutnya bergantung kepada hasil perlaksanaan arahan yg sebelumnya. • Jika hasil perlaksanaan arahan sebelumnya belum diperolehi maka pipeline stalled terjadi. • Bagi pemproses yg menggunakan four-stages pipeline. Fasa pertama akan mencapai arahan dari cache, fasa kedua akan menyahkodkan arahan dan membaca operand sumber dari
register file, fasa ketiga pula akan melaksanakan operasi ALU dan menyimpan hasilnya di lokasi yg dikehendaki. • Andaikan arahan mempunyai 3 operand iaitu 2 operand sumber dan 1 operand destinasi. • Rajah 8.7 menunjukkan perkakasan yang menyokong ciri-ciri di atas. • Rajah 8.7a menunjukkan hubungan di antara ALU dan register file. • Register file ini membenarkan 3 lokasi yg berlainan dicapai serentak dalam setiap clock period di mana dua lokasi bagi operand sumber
SRC1 dan SRC2 yg dihantar ke input register di ALU, dan RSLT iaitu result register disimpan di lokasi ketiga pada register file. • Oleh itu pada setiap akhir clock period, 2 operand sumber diletakkan pada SRC1 dan SRC2 dan output ALU disimpan dalam RSLT register. Hasil ini akan dihantar ke register file pada clock cycle berikutnya. • Rajah 8.7b menunjukkan kedudukan SRC1, SRC2 dan RSLT dalam pipeline. • Ketiga-tiga register ini adalah sebahagian daripada intermediate storage buffer.
Contoh: Mul R2, R3, R4 • Add R5, R4, R6 Figure 8.6. Pipeline stalled by data dependency between D2 and W1.
Rajah 8.6 menggambarkan masa yg diperlukan untuk melaksanakan 2 arahan ini. • Arahan Mul yg dicapai pada clock cyle pertama akan melaksanakan operasi R4 [R2] + [R3]. • Kandungan 2 register sumber,R2 dan R3 dibaca pada clock cycle kedua dan dihantar ke register SRC1 dan SRC2. • ALU akan melakukan operasi pendaraban dan hasil diletakkan dalam ALU output register iaitu RSLT pada clock cycle ketiga dan kemudiannya ia akan dihantar ke R4.
Hardware pemproses perlu tahu bahawa operand sumber bagi arahan kedua (I2) adalah operasi destinasi bagi arahan pertama (I1) dan nilai bagi operand ini perlulah yg terkini. • Oleh itu fasa Decode yg bertanggungjawab mencapai operand sumber dari R4 tidak dapat melakukan tugas ini sehingga ke clock cycle kelima. Jadi pipeline stalled selama 2 clock cycle. • Bagi mengelakkan delay, perkakasan yg melaksanakan arahan boleh disusun agar dapat membolehkan hasil daripada operasi arithmetik bersedia untuk digunakan oleh operasi ALU yg
lain dalam kitaran seterusnya. • Teknik ini dipanggil operand forwarding. • Melalui teknik ini, selepas fasa Decode I2, litar kawalan mendapati bahawa operand sumber I2 adalah sama dengan operand destinasi I1. • Jadi operasi mencapai operand sumber bagi I2 dalam fasa Decode ditinggalkan dahulu. • Dalam clock cycle yg berikutnya iaitu fasa Execute I1, operand sumber yg diperlukan dibawa secara terus dari RSLT melalui forwading data path.
1 5 6 2 3 7 4 E E F W W D W Clock Cycle Instruction I1 F D I2 F D E I3 • Jadi perlaksanaan I2 dapat diteruskan tanpa gangguan.
Instruction Queue • Operasi capai (Fetch) arahan dari memori utama seringkali mengalami gangguan seperti cache miss ataupun bagi yg melibatkan branching, arahan yg berikutnya tidak dapat dicapai selagi arahan syarat cabang tidak dikira (conditional branch) • Bagi mengurangkan kesan gangguan ini, kebanyakan pemproses menggunakan Fetch unit yg dapat mencapai arahan sebelum ianya diperlukan dan dimasukkan ke dalam satu queue.
Giliran arahan (Instruction Queue) ini dapat menyimpan beberapa arahan dalam satu masa. • Satu unit yg berasingan yg dipanggil Unit Dispatch digunakan untuk mengambil arahan dari depan queue dan menghantarnya ke Unit Execution. Ia beroperasi secara First In First Out (FIFO). (Rujuk rajah 8.10) • Untuk lebih berkesan, Fetch unit ini mestilah mempunyai keupayaan menyahkod dan keupayaan memproses untuk mengenalpasti dan melaksanakan arahan branch.
Instruction fetch unit Instruction queue F : Fetch instruction D : Dispatch/ E : Ex ecute W : Write Decode instruction results unit Figure 8.10. Use of an instruction queue in the hardware organization of Figure 8.2b.
Jadi kelengahan (delay) yg berlaku dalam unconditional branch tidaklah terlalu lama kerana unit Fetch dapat mengira alamat yang dikehendaki dan terus mencapai arahan bermula pada alamat tersebut. • Giliran arahan ini adalah satu cara yg efektif jika pelbagai unit Execution digunakan dan arahan-arahan mungkin dilaksanakan tidak mengikut susunan.
Branching • Perlaksanaan arahan branch memerlukan perlaksanaan yg unik dalam pipeline. • Andaikan giliran arahan tidak digunakan. • Rajah 7.8 (old text book) menunjukkan jujukan arahan di mana arahan Ij dan Ij+1 disimpan di dalam memori utama dan Ij adalah arahan branch. Branch target adalah arahan Ik.
Instruction Ij (Branch) Fj Ej Execution unit idle Ij+1 Fj+1 Ik Fk Ek Ik+1 Fk+1 Ek+1 Figure 7.8: An idle cycle caused by a branch instruction
operasi Fetch Ij+1 sedang dilakukan sewaktu alamat branch sedang dikira dalam Ej • tetapi pemproses mestilah mengabaikan dahulu Ij+1 dan mula mencapai Ik • unit Execution mestilah diberitahu supaya idle dahulu daripada melakukan Ej+1 • masa yg hilang akibat daripada arahan cabang dipanggil branch penalty
Andaikan pula giliran arahan digunakan di mana arahan dicapai sebelum arahan tersebut diperlukan. Rujuk rajah 7.9 (old text book) • Rajah 7.9 menerangkan: • andaikan 4 arahan boleh dicapai dalam satu masa dari cache. Arahan-arahan tersebut iaitu I1 hingga I4 akan dimasukkan ke dalam giliran arahan. • Oleh kerana giliran arahan boleh mengenalpasti arahan cabang iaitu I3, ia terus melaksanakan E3 dan mengira alamat target iaitu Ik. • Daripada situ ia akan mencapai 4 lagi arahan iaitu Ik hingga Ik+3.
arahan I4 diabaikan dahulu. • sementara itu E1 dilakukan diikuti dengan E2 dan Ek • dengan cara ini, tidak ada dalam delay yg berlaku dan ia dipanggil branch folding.
Delayed Branch • teknik ini digunakan untuk meminimakan slot yg tertangguh akibat daripada arahan cabang bersyarat (to over come branch penalty-delay problem) • Dalam rajah 7.8 (old text book), pemproses meneruskan mencapai arahan Ij+1 sebelum mengetahui bahawa arahan semasa iaitu Ij ialah arahan branch. • Apabila Ij telah dilaksanakan dan branch perlu dilakukan, pemproses akan buang arahan yg telah dicapai iaitu Ij+1 dan mencapai arahan target bagi branch iaituIk.
Lokasi selepas arahan branch dipanggil branch delay. Ia mungkin terdapat satu atau lebih branchdelay slot bergantung kepada masa perlaksanaan arahan branch. • Jadi penggunaan teknik delayed branch akan meminimakan slot yg tertangguh akibat daripada arahan branch bersyarat. • Dalam teknik ini, arahan pada delayed slot akan tetap dicapai dan ia akan tetap dilaksanakan samada branch berlaku atau tidak. • Tujuannya adalah supaya semua slot dapat digunakan mengikut fasa masing-masing.
Jika tidak ada arahan utk diisi pada delayed slot, slot ini akan diisi dengan arahan NOP (no-operation). • Contoh, di bawah menunjukkan jujukan program. LOOP Shift_left R1 Decrement R2 Branch_if = 0 LOOP NEXT Add R1, R3 • register R2 digunakan sebagai counter untuk mengira berapa kali kandungan R1 shift left.
Bagi pemproses dengan two-stage pipeline dan satu delay slot, arahan tadi boleh disusun semula seperti di bawah: LOOP Decrement R2 Branch_if = 0 LOOP Shift_left R1 NEXT Add R1, R3 • pada masa ini arahan shift akan dicapai semasa arahan branch sedang dilaksanakan. • selepas menilai syarat (condition) branch, pemproses akan mencapai arahan di LOOP atau di NEXT, bergantung kepada syarat branch (true atau false).
Untuk kedua-dua keadaan ia akan menyelesaikan perlaksanaan arahan shift. • Rajah 8.13 menunjukkan jujukan arahan bagi LOOP.
CMPD 114 : Chapter 7 Perkakasan Komputer • Input Devices • Output Devices • Serial Communication Links
Perkakasan input terdiri daripada : • Keyboard • Mouse • Trackball, joystick and Touchpad • Scanners • Perkakasan output terdiri daripada : • Video Displays • Flat-Panel Displays • Printers • Graphics Accelerators
Serial Communication Links • Perkakasan seperti keyboard dan mouse biasanya dihubungkan secara terus ke komputer menggunakan kabel yang telah disediakan atau lebih dikenali sebagai Serial Communication Links. • Perkakasan yang lain seperti printer atau scanner, boleh jadi dihubungkan secara terus menggunakan kabel yang telah disediakan atau mungkin dihubungkan melalui rangkaian dikongsi bersama pengguna lain. • Internet connected permanently @ dialed telephone links.