Subscribe

RSS Feed (xml)

Powered By

Skin Design:
Free Blogger Skins

Powered by Blogger

Minggu, 28 Juni 2009

Superscalar

Sejarah (SuperScala)

Seymour Cray 's CDC 6600 dari 1965 sering disebut sebagai yang pertama superscalar desain. Intel i960 CA (1988) dan 29.000 AMD seri-29050 (1990) microprocessors komersial pertama adalah satu keping superscalar microprocessors. RISC CPU seperti ini membawa konsep superscalar untuk mikro komputer karena hasil desain RISC dalam inti sederhana, sehingga mudah instruksi dispatch dan penyertaan dari beberapa unit fungsional (seperti ALUs) pada satu CPU dalam desain dibikin aturan waktu. Ini merupakan alasan yang RISC desain yang lebih cepat dari CISC melalui desain 1980-an dan 1990-an ke dalam.

Kecuali untuk digunakan dalam CPU rendah daya aplikasi, embedded system, dan baterai-powered perangkat, pada dasarnya semua tujuan-CPU umum dikembangkan sejak 1998 adalah tentang superscalar.

Pentium adalah prosesor x86 pertama superscalar; yang Nx586, Pentium Pro dan AMD K5 yang pertama di antara desain yang decodes x86-petunjuk asynchronously menjadi dinamis microcode seperti mikro-op sequence sebelum pelaksanaan sebenarnya pada superscalar mikroarsitektur ini untuk membuka dinamis dari penjadwalan buffered sebagian petunjuk dan memungkinkan lebih parallelism untuk digali dibandingkan dengan lebih kaku metode yang digunakan dalam sederhana Pentium juga disederhanakan spekulatif pelaksanaan dan boleh lebih tinggi dibandingkan dengan frekuensi clock desain seperti lanjutan Cyrix 6x86.

Dari scalar ke superscalar

Prosesor yang paling sederhana scalar prosesor. Setiap instruksi yang dijalankan oleh scalar prosesor manipulates biasanya satu atau dua item data pada suatu waktu. Dengan kontras, setiap instruksi yang dijalankan oleh prosesor vektor beroperasi secara bersamaan pada banyak data item. Sebuah analogi adalah perbedaan antara scalar dan vektor aritmatika. prosesor superscalar adalah jenis campuran keduanya. Setiap instruksi proses data satu item, tetapi ada beberapa berlebihan fungsional dalam setiap unit CPU sehingga beberapa petunjuk dapat memproses data item terpisah bersamaan.

Superscalar desain CPU menekankan pengajaran memberangkatkan meningkatkan akurasi, dan memungkinkan untuk menyimpan beberapa unit fungsional digunakan setiap waktu. Hal ini menjadi semakin penting ketika jumlah unit meningkat. Sementara awal superscalar CPU akan memiliki dua ALUs dan satu FPU, desain modern seperti PowerPC 970 mencakup empat ALUs, dua FPUs, dan dua SIMD unit. Jika tidak efektif di memberangkatkan adalah menjaga semua unit bosan dengan petunjuk, kinerja sistem akan menderita.

prosesor superscalar biasanya sustains yang menilai pelaksanaan melebihi satu instruksi per siklus mesin. Namun hanya beberapa instruksi pemrosesan bersamaan tidak membuat arsitektur superscalar, sejak pipelined, multiprocessor atau multi-core arsitektur juga mencapai itu, tetapi dengan berbagai metode.

Dalam superscalar CPU yang memberangkatkan membaca instruksi dari memori dan memutuskan mana yang dapat dijalankan secara paralel, dispatching mereka untuk unit fungsional yang berlebihan di dalam satu CPU. Oleh karena itu sebuah prosesor superscalar dapat envisioned memiliki beberapa Pipelines paralel, masing-masing adalah pemrosesan instruksi secara bersamaan dari satu instruksi thread.

Batasan

Tersedia kinerja dari teknik superscalar dibatasi oleh dua bidang utama:
  1. Sudut intrinsik parallelism dalam instruksi streaming, yaitu terbatasnya jumlah instruksi level parallelism, dan
  2. Kompleksitas waktu dan biaya yang terkait memberangkatkan dan memeriksa dependensi logika.

Dalam beberapa kasus petunjuk tidak tergantung pada satu sama lain dan dapat dijalankan secara bersamaan. Dalam kasus lain mereka saling tergantung: satu instruksi dampak baik sumberdaya atau hasil lainnya. TInstruksi a = b + c; d = e + f dapat dijalankan secara paralel karena tidak tergantung dari hasil perhitungan pada lainnya. Namun, instruksi a = b + c; b = e + f runnable mungkin tidak secara paralel, tergantung pada urutan instruksi yang lengkap, sementara mereka bergerak melalui unit.

Bila jumlah instruksi yang dikeluarkan secara bersamaan meningkat, biaya ketergantungan memeriksa meningkat sangat pesat. Hal ini kian diperparah oleh perlu memeriksa dependensi pada waktu berjalan dan pada CPU's clock tinggi. Ini termasuk biaya tambahan gerbang logika yang diperlukan untuk melaksanakan pemeriksaan, dan waktu keterlambatan melalui pintu itu.Penelitian menunjukkan gerbang biaya dalam beberapa kasus mungkin n k pintu, dan keterlambatan biaya k 2 log n, dimana n adalah jumlah instruksi pada prosesor instruksi set, dan k adalah jumlah sekaligus dispatched petunjuk. Dalam matematika, hal ini disebut combinatoric masalah melibatkan permutations.

Walaupun mungkin berisi instruksi streaming tidak antar-instruksi dependensi, yang superscalar CPU namun harus memeriksa bahwa kemungkinan, karena tidak ada jaminan lain dan kegagalan untuk mendeteksi ketergantungan akan menghasilkan hasil yang salah.

Tidak peduli bagaimana lanjutan proses yang semikonduktor atau cara yang cepat berpindah kecepatan, ini tempat yang praktis batasan jumlah instruksi dapat sekaligus dispatched.Meskipun proses kemajuan, akan pernah lebih besar jumlah unit fungsional (misalnya, ALUs), beban memeriksa dependensi instruksi yang tumbuh begitu pesat yang dicapai superscalar dispatch batas cukup kecil. Mungkin di urutan lima sampai enam sekaligus dispatched petunjuk.

Namun bahkan diberikan sangat jauh lebih cepat memeriksa dependensi logika lain pada konvensional superscalar CPU, jika instruksi streaming itu sendiri memiliki banyak dependensi, ini juga akan membatasi speedup mungkin. Dengan demikian sudut intrinsik parallelism dalam bentuk kode streaming kedua batasan.

Sumber: Klik Disini


CISC (Complex Instruction-Set Computer )

Definisi

Complex instruction-set computing atau Complex Instruction-Set ComputerCISC; "Kumpulan instruksi komputasi kompleks") adalah sebuah arsitektur dari set instruksi dimana setiap instruksi akan menjalankan beberapa operasi tingkat rendah, seperti pengambilan dari memory, operasi aritmetika, dan penyimpanan ke dalam memory, semuanya sekaligus hanya di dalam sebuah instruksi. Karakteristik CISC dapat dikatakan bertolak-belakang dengan RISC.

Sebelum proses RISC didesain untuk pertama kalinya, banyak arsitek komputer mencoba menjembatani celah semantik", yaitu bagaimana cara untuk membuat set-set instruksi untuk mempermudah pemrograman level tinggi dengan menyediakan instruksi "level tinggi" seperti pemanggilan procedure, proses pengulangan dan mode-mode pengalamatan kompleks sehingga struktur data dan akses array dapat dikombinasikan dengan sebuah instruksi. Karakteristik CISC yg "sarat informasi" ini memberikan keuntungan di mana ukuran program-program yang dihasilkan akan menjadi relatif lebih kecil, dan penggunaan memory akan semakin berkurang. Karena CISC inilah biaya pembuatan komputer pada saat itu (tahun 1960) menjadi jauh lebih hemat.

Memang setelah itu banyak desain yang memberikan hasil yang lebih baik dengan biaya yang lebih rendah, dan juga mengakibatkan pemrograman level tinggi menjadi lebih sederhana, tetapi pada kenyataannya tidaklah selalu demikian. Contohnya, arsitektur kompleks yang didesain dengan kurang baik (yang menggunakan kode-kode mikro untuk mengakses fungsi-fungsi hardware), akan berada pada situasi di mana akan lebih mudah untuk meningkatkan performansi dengan tidak menggunakan instruksi yang kompleks (seperti instruksi pemanggilan procedure), tetapi dengan menggunakan urutan instruksi yang sederhana.

Satu alasan mengenai hal ini adalah karena set-set instruksi level-tinggi, yang sering disandikan (untuk kode-kode yang kompleks), akan menjadi cukup sulit untuk diterjemahkan kembali dan dijalankan secara efektif dengan jumlah transistor yang terbatas. Oleh karena itu arsitektur -arsitektur ini memerlukan penanganan yang lebih terfokus pada desain prosesor. Pada saat itu di mana jumlah transistor cukup terbatas, mengakibatkan semakin sempitnya peluang ditemukannya cara-cara alternatif untuk optimisasi perkembangan prosesor. Oleh karena itulah, pemikiran untuk menggunakan desain RISC muncul pada pertengahan tahun 1970 (Pusat Penelitian Watson IBM 801 - IBMs)

Contoh-contoh prosesor CISC adalah System/360, VAX, PDP-11, varian Motorola 68000 , dan CPU AMD dan Intel x86.

Istilah RISC dan CISC saat ini kurang dikenal, setelah melihat perkembangan lebih lanjut dari desain dan implementasi baik CISC dan CISC. Implementasi CISC paralel untuk pertama kalinya, seperti 486 dari Intel, AMD, Cyrix, dan IBM telah mendukung setiap instruksi yang digunakan oleh prosesor-prosesor sebelumnya, meskipun efisiensi tertingginya hanya saat digunakan pada subset x86 yang sederhana (mirip dengan set instruksi RISC, tetapi tanpa batasan penyimpanan/pengambilan data dari RISC). Prosesor-prosesor modern x86 juga telah menyandikan dan membagi lebih banyak lagi instruksi-instruksi kompleks menjadi beberapa "operasi-mikro" internal yang lebih kecil sehingga dapat instruksi-instruksi tersebut dapat dilakukan secara paralel, sehingga mencapai performansi tinggi pada subset instruksi yang lebih besar.

Sumber: Klik disini

PERBEDAAN CISC Dan RISC

Apakah memang RISC lebih lebih baik dari CISC atau sebaliknya. Tetapi tahukah kita dimana sebenarnya letak perbedaan itu. Apakah prosesor dengan instruksi yang lebih sedikit akan lebih baik dari prosesor yang instruksinya kompleks dan lengkap. Apakah memang perbedaan prosesor itu hanya dari banyak atau tidaknya instruksi saja. Bukankah jumlah instruksi tidak berhubungan dengan ke-handal-an suatu prosesor. Pertanyaan-pertanyaan ini yang hendak dijawab melalui tulisan berikut. Namun supaya lebih dekat dengan elektronika praktis, ElectronicLab akan lebih fokus pada mikrokontroler low-cost yang berbasis RISC dan CISC. Sebagai contoh dari mikrokontroler CISC adalah 68HC11 buatan Motorola dan 80C51 dari Intel. Kita juga mengenal keluarga PIC12/16CXX dari Microchip dan COP8 buatan National Semiconductor sebagai mikrokontroler yang berbasis RISC.

Sistem mikrokontroler selalu terdiri dari perangkat keras (hardware) dan perangkat lunak (software). Perangkat lunak ini merupakan deretan perintah atau instruksi yang dijalankan oleh prosesor secara sekuensial. Instruksi itu sendiri sebenarnya adalah bit-bit logik 1 atau 0 (biner) yang ada di memori program. Angka-angka biner ini jika lebarnya 8 bit disebut byte dan jika 16 bit disebut word. Deretan logik biner inilah yang dibaca oleh prosesor sebagai perintah atau instruksi. Supaya lebih singkat, angka biner itu biasanya direpresentasikan dengan bilangan hexa (HEX). Tetapi bagi manusia, menulis program dengan angka biner atau hexa sungguh merepotkan. Sehingga dibuatlah bahasa assembler yang direpresentasikan dengan penyingkatan kata-kata yang cukup dimengerti oleh manusia.

Bahasa assembler ini biasanya diambil dari bahasa Inggris dan presentasinya itu disebut dengan Mnemonic. Masing-masing pabrik mikroprosesor melengkapi chip buatannya dengan set instruksi yang akan dipakai untuk membuat program.

Biner Hexa Mnemonic

10110110 B6 LDAA …

10010111 97 STAA …

01001010 4A DECA …

10001010 8A ORAA …

00100110 26 BNE …

00000001 01 NOP…

01111110 7E JMP …

Sebagian set instruksi 68HC11

Pada awalnya, instruksi yang tersedia amat sederhana dan sedikit. Kemudian desainer mikroprosesor berlomba-lomba untuk melengkapi set instruksi itu selengkap-lengkapnya. Jumlah instruksi itu berkembang seiring dengan perkembangan desain mikroprosesor yang semakin lengkap dengan mode pengalamatan yang bermacam-macam. Mikroprosesor lalu memiliki banyak instruksi manipulasi bit dan seterusnya dilengkapi dengan instruksi-instruksi aritmatik seperti penjumlahan, pengurangan, perkalian dan pembagian. Seperti contohnya 68HC11 banyak sekali memiliki set instruksi untuk percabangan seperti BNE, BLO, BLS, BMI, BRCLR, BRSET dan sebagainya.

Perancang mikroprosesor juga memperkaya ragam instruksi tersebut dengan membuat satu instruksi tunggal untuk program yang biasanya dijalankan dengan beberapa intruksi. Misalnya pada 80C51 untuk contoh program berikut ini.

LABEL …

DEC R0

MOV A,R0

JNZ LABEL

Program ‘decrement’ 80C51

Program ini adalah program pengulangan yang mengurangi isi register R0 sampai register R0 menjadi kosong (nol). Intel menambah set instruksinya dengan membuat satu instruksi khusus untuk keperluan seperti ini :

LABEL ….

DJNZ R0,LABEL

Instruksi ‘decrement jump not zero’ 80C51

Kedua contoh program ini hasilnya tidak berbeda. Namun demikian, instruksi kompleks seperti DJNZ mempermudah pembuat program. Set instruksi yang lengkap diharapkan akan semakin membuat pengguna mikroprosesor leluasa menulis program dalam bahasa assembler yang mendekati bahasa pemrograman level tinggi. Intel 80C51 yang dikembangkan dari basis prosesor 8048 dirilis pada tahun 1976 memiliki tidak kurang dari 111 instruksi. Tidak ketinggalan, 68HC11 dari Motorola yang populer di tahun 1984 dilengkapi dengan 145 instruksi. Karena banyak dan kompleksnya instruksi yang dimiliki 68HC11 dan 80C51, kedua contoh mikrokontroler ini disebut sebagai prosesor CISC.

Debat CISC versus RISC dimulai ketika pada tahun 1974 IBM mengembangkan prosesor 801 RISC. Argumen yang dipakai waktu itu adalah mengapa diperlukan instruksi yang kompleks. Sebab pada prinsipnya, instruksi yang kompleks bisa dikerjakan oleh instruksi-instruksi yang lebih sederhana dan kecil. Ketika itu penggunaan bahasa tingkat tinggi seperti Fortran dan kompiler lain (compiler/interpreter) mulai berkembang. Apalagi saat ini compiler seperti C/C++ sudah lazim digunakan. Sehingga sebenarnya tidaklah diperlukan instruksi yang kompleks di tingkat prosesor. Kompiler yang akan bekerja men-terjemahkan program dari bahasa tingkat tinggi menjadi bahasa mesin.

Untuk melihat bagaimana perbedaan instruksi RISC dan CISC, mari kita lihat bagaimana keduanya melakukan perkalian misalnya c = a x b. Mikrokontroler 68HC11 melakukannya dengan program sebagai berikut :

LDAA #$5

LDAB #$10

MUL

Program 5×10 dengan 68HC11

Cukup tiga baris saja dan setelah ini accumulator D pada 68HC11 akan berisi hasil perkalian dari accumulator A dan B, yakni 5 x 10 = 50. Program yang sama dengan PIC16CXX, adalah seperti berikut ini.

MOVLW 0×10

MOVWF Reg1

MOVLW 0×05

MOVWF Reg2

CLRW

LOOP ADDWF Reg1,0

CFSZ Reg2,1

GOTO LOOP

Program 5×10 dengan PIC16CXX

Prosesor PIC16CXX yang RISC ini, tidak memiliki instruksi perkalian yang khusus. Tetapi perkalian 5×10 itu sama saja dengan penjumlahan nilai 10 sebanyak 5 kali. Kelihatannya membuat program assembly dengan prosesor RISC menjadi lebih kompleks dibandingkan dengan prosesor CISC. Tetapi perlu diingat, untuk membuat instruksi yang kompleks seperti instruksi MUL dan instruksi lain yang rumit pada prosesor CISC, diperlukan hardware yang kompleks juga. Dibutuhkan ribuan gerbang logik (logic gates) transistor untuk membuat prosesor yang demikian. Instruksi yang kompleks juga membutuhkan jumlah siklus mesin (machine cycle) yang lebih panjang untuk dapat menyelesaikan eksekusinya. Instruksi perkalian MUL pada 68HC11 memerlukan 10 siklus mesin dan instruksi pembagiannya memerlukan 41 siklus mesin.

Pendukung RISC berkesimpulan, bahwa prosesor yang tidak rumit akan semakin cepat dan handal. Hampir semua instruksi prosesor RISC adalah instruksi dasar (belum tentu sederhana), sehingga instruksi-instruksi ini umumnya hanya memerlukan 1 siklus mesin untuk menjalankannya. Kecuali instruksi percabangan yang membutuhkan 2 siklus mesin. RISC biasanya dibuat dengan arsitektur Harvard, karena arsitektur ini yang memungkinkan untuk membuat eksekusi instruksi selesai dikerjakan dalam satu atau dua siklus mesin.

Sebagai perbandingan jumlah instruksi pada prosesor RISC, COP8 hanya dilengkapi dengan 58 instruksi dan PIC12/16CXX hanya memiliki 33 instruksi saja. Untuk merealisasikan instruksi dasar yang jumlah tidak banyak ini, mikroprosesor RISC tidak memerlukan gerbang logik yang banyak. Karena itu dimensi dice IC dan konsumsi daya prosesor RISC umumnya lebih kecil dibanding prosesor CISC. Bukan karena kebetulan, keluarga mikrokontroler PICXX banyak yang dirilis ke pasar dengan ukuran mini. Misalnya PIC12C508 adalah mikrokontroler DIP 8 pin.

CISC dan RISC perbedaannya tidak signifikan jika hanya dilihat dari terminologi set instruksinya yang kompleks atau tidak (reduced). Lebih dari itu, RISC dan CISC berbeda dalam filosofi arsitekturnya. Filosofi arsitektur CISC adalah memindahkan kerumitan software ke dalam hardware. Teknologi pembuatan IC saat ini memungkinkan untuk menamam ribuan bahkan jutaan transistor di dalam satu dice. Bermacam-macam instruksi yang mendekati bahasa pemrogram tingkat tinggi dapat dibuat dengan tujuan untuk memudahkan programmer membuat programnya. Beberapa prosesor CISC umumnya memiliki microcode berupa firmware internal di dalam chip-nya yang berguna untuk menterjemahkan instruksi makro. Mekanisme ini bisa memperlambat eksekusi instruksi, namun efektif untuk membuat instruksi-instruksi yang kompleks. Untuk aplikasi-aplikasi tertentu yang membutuhkan singlechip komputer, prosesor CISC bisa menjadi pilihan.

Sebaliknya, filosofi arsitektur RISC adalah arsitektur prosesor yang tidak rumit dengan membatasi jumlah instruksi hanya pada instruksi dasar yang diperlukan saja. Kerumitan membuat program dalam bahasa mesin diatasi dengan membuat bahasa program tingkat tinggi dan compiler yang sesuai. Karena tidak rumit, teorinya mikroprosesor RISC adalah mikroprosesor yang low-cost dalam arti yang sebenarnya. Namun demikian, kelebihan ruang pada prosesor RISC dimanfaatkan untuk membuat sistem-sistem tambahan yang ada pada prosesor modern saat ini. Banyak prosesor RISC yang di dalam chip-nya dilengkapi dengan sistem superscalar, pipelining, caches memory, register-register dan sebagainya, yang tujuannya untuk membuat prosesor itu menjadi semakin cepat.

Sumber: Klik Disini



Sabtu, 27 Juni 2009

RISC (reduced instruction set computer)


Akronim yang RISC (diucapkan sebagai risiko), dikurangi instruksi untuk mengatur komputer, merupakan CPU desain strategi yang menekankan wawasan yang disederhanakan petunjuk bahwa "tidak kurang" mungkin untuk tetap memberikan performa yang lebih tinggi jika kesederhanaan ini dapat dimanfaatkan untuk membuat petunjuk jalankan sangat cepat. Banyak proposal untuk "tepat" definisi telah berusaha, dan istilah yang sedang perlahan-lahan diganti dengan yang lebih deskriptif beban-toko arsitektur. Terkenal termasuk keluarga RISC Alpha, ARC, ARM, AVR, MIPS, PA-RISC, PIC, Power Arsitektur (termasuk PowerPC), SuperH, dan SPARC.

Sebagai sebuah ide lama, beberapa aspek terkait dengan RISC pertama-desain yang diberi label (sekitar 1975) termasuk pengamatan bahwa memori dibatasi Kompiler yang sering kali tidak dapat memanfaatkan fitur yang ditujukan untuk memfasilitasi coding, dan kompleks yang menangani inherently mengambil banyak untuk melakukan putaran.Ia berpendapat bahwa fungsi akan lebih baik dilakukan oleh sequence dari petunjuk sederhana, jika hal ini dapat menghasilkan implementasi sederhana cukup untuk menanggulangi sangat tinggi frekuensi, dan cukup kecil untuk meninggalkan ruang bagi banyak register, factoring out lambat akses memory. Seragam, tetap dengan panjang instruksi arithmetics dibatasi untuk register yang dipilih untuk memudahkan pipelining instruksi sederhana ini di desain, dengan beban-toko khusus petunjuk mengakses memori.

Non-RISC filosofi desain

Pada awal hari dari industri komputer, pemrograman dilakukan dalam bahasa assembly atau kode mesin, yang didorong kuat dan mudah digunakan petunjuk. CPU designers therefore tried to make instructions that would do as much work as possible. CPU desainer itu mencoba untuk membuat instruksi yang akan melakukan kerja sebanyak mungkin. Dengan datangnya dari tingkat tinggi bahasa, komputer arsitek juga mulai membuat instruksi khusus langsung ke pusat menerapkan mekanisme tertentu seperti bahasa. Umum tujuan lain adalah untuk memberikan segala menangani modus untuk setiap instruksi, yang dikenal sebagai orthogonality, untuk memudahkan pelaksanaan kompilator. Operasi aritmatika dapat itu sering ada hasil maupun dalam memori langsung operands (selain mendaftar atau langsung).

Sikap yang pada saat itu adalah desain hardware yang lebih matang dari desain kompiler ini sehingga dengan sendirinya juga adalah alasan untuk melaksanakan fungsi bagian dalam hardware dan / atau microcode daripada dalam memori terpaksa kompilator (atau kode) sendiri. Rancangan ini menjadi filosofi retroactively diistilahkan Complex Instruction Set Computer (CISC) setelah RISC filosofi datang ke tempat.


CPU juga telah mendaftar relatif sedikit, karena beberapa alasan:

  • Lagi register juga menunjukkan lebih memakan waktu menyimpan dan memulihkan yang mendaftar pada mesin stack. Banyaknya jumlah register memerlukan sejumlah besar instruksi specifiers mendaftar sebagai bit, yang berarti kurang padat kode (lihat di bawah).
  • CPU register yang lebih mahal daripada memori eksternal lokasi; besar telah mendaftar set bagong terbatas dengan papan sirkuit atau chip integrasi.
Penting memaksa mendorong kompleksitas sangat terbatas memori utama (di urutan kilobyte). Karena itu berguna untuk kerapatan informasi yang diselenggarakan di komputer program yang akan tinggi, yang mengarah ke fitur seperti sangat encoded, variabel panjang petunjuk, melakukan loading data serta perhitungan (seperti yang disebutkan di atas). Isu ini yang lebih tinggi dibandingkan dengan prioritas kemudahan decoding seperti petunjuk.

Yang sama pentingnya adalah alasan utama kenangan yang cukup lambat (yang umum adalah jenis ferrite core memori); padat dengan menggunakan kemasan informasi, kita dapat mengurangi frekuensi CPU yang memiliki akses ke sumber daya ini lambat. Modern komputer wajah serupa sehingga faktor utama adalah kenangan lambat dibandingkan dengan CPU dan cache memori yang cepat yang digunakan untuk mengatasi ini adalah bukan terbatas besarnya.Ini dapat menjelaskan mengapa sebagian sangat encoded telah membuktikan set instruksi yang akan berguna sebagai sebagai RISC desain modern komputer.


Filosofi desain RISC

Pada pertengahan tahun 1970-an peneliti (terutama John Cocke) di IBM (dan proyek-proyek serupa di tempat lain) menunjukkan bahwa mayoritas kombinasi ini ortogonal menangani mode dan petunjuk yang tidak digunakan oleh sebagian besar program-program yang dihasilkan oleh kompiler yang tersedia pada saat itu. Itu dibuktikan dalam banyak kasus sulit untuk menulis lebih dari compiler dengan kemampuan terbatas untuk memanfaatkan fitur-fitur yang disediakan oleh CPU konvensional.

Ia juga menemukan bahwa, pada microcoded implementasi arsitektur tertentu, kompleks operasi cenderung lebih lambat dari yang sederhana urutan operasi melakukan hal yang sama. Ini adalah sebagian efek pada kenyataan bahwa banyak desain yang rushed, dengan sedikit waktu untuk mengoptimalkan setiap instruksi atau tune, namun hanya mereka yang paling sering digunakan. Salah satu contoh adalah hina VAX 's INDEX instruksi, yang berjalan lambat dari yang setara dengan pelaksanaan operasi sederhana.

Seperti yang disebutkan di tempat lain, inti memori sudah sejak lama telah lama daripada banyak CPU desain. The advent dari memori semikonduktor perbedaan ini berkurang, tetapi masih lebih nyata yang mendaftar (dan kemudian cache) akan memungkinkan operasi frekuensi CPU yang lebih tinggi. Mendaftar akan memerlukan tambahan besar keping papan atau daerah yang pada saat itu (1975), dapat dilakukan jika tersedia kerumitan logika CPU dikurangi.

Namun lain dorongan dari kedua RISC dan desain lainnya berasal dari pengukuran praktis di dunia nyata program. Andrew Tanenbaum ikut banyak ini, menunjukkan bahwa prosesor yang terlalu besar sering immediates. FSebagai contoh, ia menunjukkan bahwa 98% dari semua konstan dalam sebuah program akan masuk dalam 13 bit, namun banyak CPU desain khusus 16 atau 32 bit untuk menyimpan mereka. T Hal ini menunjukkan bahwa, untuk mengurangi jumlah memori akses, tetap dapat menyimpan panjang mesin konstan di unused bit instruksi dari kata itu sendiri, sehingga mereka akan segera siap ketika CPU kebutuhan mereka (seperti banyak menangani langsung dalam desain konvensional) .Diperlukan kecil opcodes untuk meninggalkan ruang yang cukup untuk ukuran konstan di instruksi 32-bit kata.

Karena banyak program yang nyata-dunia menghabiskan sebagian besar waktu mereka melaksanakan operasi sederhana, beberapa peneliti memutuskan untuk fokus pada mereka yang melakukan operasi secepat mungkin.

clock menilai dari CPU dibatasi oleh waktu yang diperlukan untuk menjalankan operasi sub-lambat dari setiap instruksi; penurunan siklus waktu yang sering accelerates pelaksanaan petunjuk lainnya. Fokus pada "dikurangi petunjuk" yang menyebabkan dihasilkan mesin yang disebut "mengurangi instruksi set komputer" (RISC). Tujuannya adalah untuk membuat instruksi yang sederhana sehingga mereka dapat dengan mudah dapat pipelined, untuk mencapai satu jam throughput pada frekuensi tinggi.

Kemudian ia dicatat bahwa salah satu yang paling signifikan karakteristik prosesor RISC adalah eksternal memori hanya dapat diakses oleh beban atau menyimpan instruksi. Disederhanakan ini banyak aspek desain prosesor: memungkinkan untuk menjadi petunjuk tetap-panjang, menyederhanakan Pipelines, isolating dan logika untuk berhadapan dengan keterlambatan menyelesaikan memori akses (cache miss, dll) hanya dua petunjuk. Hal ini menyebabkan RISC desain yang disebut sebagai beban arsitektur.

Typical karakteristik RISC


Untuk setiap tingkat kinerja umum, sebuah chip RISC biasanya akan jauh lebih sedikit Transistor didedikasikan untuk inti logika yang awalnya diizinkan desainer untuk meningkatkan ukuran register menetapkan dan meningkatkan internal parallelism.

Fitur-fitur lainnya, yang biasanya ditemukan di arsitektur RISC adalah:

* Seragam instruksi format, dengan menggunakan satu kata dengan opcode bit dalam posisi yang sama dalam setiap instruksi, menuntut kurang decoding;
* Identik register tujuan umum, memungkinkan setiap mendaftar untuk digunakan dalam konteks apapun, menyederhanakan kompiler desain (walaupun biasanya terdapat terpisah floating point register);
* Menangani kompleks dilakukan melalui urutan dari aritmatika dan / atau toko-beban operasional;
* Beberapa jenis data dalam perangkat keras, ada beberapa CISCs byte string petunjuk, atau dukungan kompleks nomor; ini adalah sampai saat ini tidak mungkin ditemukan di RISC.


Desain RISC juga lebih mungkin untuk memiliki sebuah model Harvard memori, dimana instruksi dan data aliran sungai yang konseptual dipisahkan; ini berarti memodifikasi memori kode diadakan mungkin tidak mempunyai efek pada instruksi yang dijalankan oleh prosesor (karena CPU telah terpisah instruksi dan data cache), setidaknya sampai khusus sinkronisasi instruksi dikeluarkan.Pada terbalik, kedua cache ini memungkinkan untuk dapat diakses secara bersamaan, yang dapat meningkatkan kinerja.

Cabang penundaan slot ruang merupakan instruksi langsung mengikuti melompat atau cabang. Instruksi di dalam ruang ini dijalankan, apakah cabang diambil (dengan kata lain efek dari cabang yang tertunda). Instruksi ini menyimpan upacara ucapan alu dari CPU sibuk untuk tambahan biasanya diperlukan waktu untuk melakukan cabang. Saat ini cabang penundaan slot dianggap efek samping yang kurang dari strategi khusus untuk menerapkan beberapa desain RISC, modern dan desain RISC umumnya membunuh dengan (seperti PowerPC, versi yang lebih baru SPARC, dan MIPS).

Early RISC


Pertama sistem yang sekarang dikenal sebagai RISC adalah CDC 6600 supercomputer, yang dirancang pada tahun 1964, satu dekade sebelum istilah itu invented. CDC 6600 yang mempunyai beban-toko dengan arsitektur hanya dua menangani mode (pendaftaran + mendaftar, dan langsung mendaftar + konstan) dan 74 opcodes (sedangkan yang Intel 8086 memiliki 400). 6600 yang telah sebelas pipelined berfungsi untuk unit aritmatika dan logika, plus beban lima unit dan dua unit toko; memori telah beberapa bank sehingga semua beban-toko unit dapat beroperasi pada saat yang sama. Dasar siklus clock / instruksi menilai isu itu 10 kali lebih cepat daripada memori akses waktu. Jim Thornton dan Seymour Cray dirancang sebagai nomor-crunching CPU didukung oleh 10 komputer sederhana bernama "pinggiran prosesor" untuk menangani I / O dan fungsi sistem operasi lainnya. [9] Dengan demikian joking komentar nanti bahwa akronim RISC sebenarnya untuk berdiri " R eally saya nvented oleh eymour C ray ". Awal yang mencoba untuk membuat sebuah chip berbasis RISC CPU merupakan proyek di IBM yang dimulai pada 1975. Nama gedung dimana proyek berjalan, pekerjaan dipimpin ke IBM 801 CPU keluarga yang telah digunakan secara luas di hardware IBM. 801 yang telah dihasilkan pada akhirnya satu keping sebagai bentuk bergelut pada tahun 1981, yang berdiri untuk 'Penelitian OPD [Kantor Divisi Produk] Micro Processor'.Seperti namanya, CPU ini dirancang untuk "mini" tugas, dan ketika dirilis pada IBM-PC IBM RT berdasarkan desain pada tahun 1986, kinerja yang tidak dapat diterima.Namun 801 terinspirasi beberapa proyek penelitian, termasuk yang baru di IBM yang akhirnya mengakibatkan mereka POWER sistem.

Yang paling umum RISC desain, bagaimanapun, adalah hasil riset universitas menjalankan program dengan dana dari DARPA VLSI Program. Program yang VLSI, praktis tidak diketahui hari ini, menyebabkan banyak kemajuan dalam jumlah chip desain, akal, dan bahkan komputer grafis.

Perhiasan yg berkelip-kelip, berdasarkan mendapatkan kinerja melalui penggunaan pipelining yang agresif dan menggunakan teknik yang dikenal sebagai windowing mendaftar. Biasa dalam satu CPU memiliki beberapa register, dan sebuah program dapat menggunakan salah mendaftar kapan saja. Dalam sebuah CPU dengan mendaftarkan jendela, ada yang mencatat jumlah besar, misalnya 128, tetapi hanya dapat menggunakan program kecil jumlah mereka, misalnya 8, setiap satu waktu. Sebuah program yang membatasi diri ke register 8 per prosedur sangat cepat dapat membuat panggilan prosedur: The panggilan hanya bergerak jendela "bawah" oleh 8, ke set register 8 prosedur yang digunakan oleh, dan kembali bergerak jendela belakang.(Pada biasa CPU, paling panggilan harus menyimpan setidaknya beberapa register 'nilai ke stack untuk menggunakan mereka mendaftar sebagai ruang kerja, dan memulihkan kembali pada nilai-nilai mereka.)

Hanya terdiri dari 44.420 Transistor (dibandingkan dengan rata-rata sekitar 100.000 dalam desain baru CISC dari era) RISC-32 saya hanya petunjuk, dan lain-benar melebihi performa satu keping desain. Mereka ini diikuti dengan 40.760 transistor, 39 instruksi RISC-II pada 1983, yang berjalan selama tiga kali secepat-RISC saya.

Sekitar waktu yang sama, John L. Hennessy memulai proyek serupa yang disebut MIPS di Universitas Stanford pada tahun 1981. MIPS hampir sepenuhnya berfokus pada pipa, sehingga ia yakin dapat dijalankan sebagai "penuh" mungkin. Pipelining walaupun telah digunakan dalam desain lainnya, beberapa fitur dari MIPS chip dibuat pipa yang jauh lebih cepat. Yang paling penting, dan mungkin annoying, dari fitur ini adalah permintaan agar semua petunjuk bisa selesai dalam satu siklus. Permintaan ini memungkinkan pipa yang akan dijalankan pada data harga lebih tinggi (tidak perlu dipaksa untuk penundaan) dan bertanggung jawab untuk banyak prosesor kinerja. Namun, ia juga memiliki efek samping negatif yang berpotensi menghilangkan banyak berguna petunjuk, seperti mengalikan atau membagi.

Pada awal tahun, RISC upaya yang terkenal, tetapi sebagian besar kepada universitas laboratorium yang telah menciptakan mereka. Berkeley usaha yang menjadi begitu terkenal yang akhirnya menjadi nama untuk seluruh konsep.Banyak di industri komputer dikritik bahwa kinerja manfaat yang tidak mungkin untuk menterjemahkan ke dalam dunia nyata-pengaturan disebabkan penurunan memori efisiensi beberapa petunjuk, dan yang merupakan alasan yang tidak ada seorangpun yang telah menggunakan mereka. But starting in 1986, all of the RISC research projects started delivering products. Tetapi mulai tahun 1986, seluruh proyek-proyek penelitian RISC dimulai pengiriman produk.



Kemudian RISC


Berkeley penelitian tidak langsung commercialized, tetapi RISC-II desain yang digunakan oleh Sun Microsystems untuk mengembangkan SPARC, oleh Pyramid Teknologi untuk mengembangkan lini kisaran multi-prosesor komputer, dan hampir setiap perusahaan beberapa tahun kemudian. Ia Sun yang menggunakan chip RISC di mesin yang baru menunjukkan bahwa RISC dari manfaat yang nyata, dan mesin cepat outpaced dasarnya kompetisi dan mengambil alih seluruh workstation pasar.

John hennessy Stanford kiri (sementara) untuk mengkomersilkan yang MIPS desain, mulai dikenal sebagai perusahaan MIPS Computer Systems. Desain pertama mereka adalah generasi kedua MIPS chip dikenal sebagai R2000. MIPS pergi pada desain menjadi salah satu yang paling digunakan RISC chips bila mereka termasuk dalam PlayStation dan Nintendo 64 game konsol. Hari ini mereka adalah salah satu yang paling umum tertanam prosesor yang digunakan untuk aplikasi high-end.

IBM belajar dari kegagalan RT-PC dan pergi untuk merancang RS/6000 berdasarkan POWER arsitektur baru. Mereka kemudian dipindahkan mereka ada AS/400 sistem untuk POWER keripik, dan menemukan banyak kejutan yang bahkan mereka yang sangat kompleks instruksi menetapkan berlari sangat cepat. POWER akan menemukan sendiri juga bergerak "bawah" dalam skala untuk menghasilkan PowerPC desain, banyak yang dihilangkan dari "IBM hanya" petunjuk dan membuat satu keping pelaksanaan. Hari ini PowerPC adalah salah satu yang paling umum digunakan CPU untuk aplikasi otomotif (beberapa mobil memiliki lebih dari 10 dari mereka di dalam). (Mulai bulan Februari 2006, Apple aktif utama mereka untuk produksi Intel x86 prosesor.)

Hampir semua vendor lainnya segera bergabung. Dari Inggris upaya penelitian serupa mengakibatkan INMOS transputer, maka The Oak Archimedes dan Advanced RISC Machine baris, yang merupakan sukses besar hari ini.Perusahaan yang sudah ada dengan desain CISC juga cepat bergabung dengan revolusi. Intel dirilis dengan i860 dan i960 oleh akhir 1980-an, meskipun mereka tidak terlalu berhasil. Motorola membangun sebuah desain baru yang disebut 88000 dalam kehormatan kepada mereka termasyhur CISC 68000, tetapi melihat hampir tidak ada dan mereka akhirnya diabaikan dan bergabung dengan IBM untuk menghasilkan PowerPC. AMD merilis mereka 29.000 yang akan pergi untuk menjadi yang paling populer RISC desain awal tahun 1990-an.

Hari ini kebanyakan semua 32-bit CPU digunakan adalah RISC CPU, dan microcontrollers. RRISC desain teknik menawarkan daya bahkan dalam ukuran kecil, dan dengan itu telah menjadi dominan untuk low-power CPU 32-bit. Embedded sistem jauh pasar terbesar untuk prosesor: Mei sementara keluarga sendiri satu atau dua komputer, mobil mereka, ponsel, dan perangkat lain yang mungkin berisi jumlah total puluhan tertanam prosesor. RISC juga telah diambil alih sepenuhnya untuk pasar yang lebih besar untuk workstation banyak 90s (sampai diambil kembali oleh murah PC berbasis solusi). Setelah rilis Sun SPARCstation lain rushed vendor untuk bersaing dengan solusi berbasis RISC sendiri. TDi pasar server high-end hari ini hampir sepenuhnya berbasis RISC [kutipan diperlukan], dan # 1 spot antara supercomputers pada 2008 [update] diselenggarakan oleh IBM 's Roadrunner sistem yang menggunakan Power Arsitektur berbasis prosesor Cell memberikan sebagian besar dari daya komputasi, walaupun banyak lainnya supercomputers menggunakan x86 CISC prosesor instead.


Kisah sukses RISC

Desain RISC menyebabkan sejumlah platform dan arsitektur berhasil, beberapa yang lebih besar:

ARM - arsitektur ARM mendominasi pasar untuk kinerja tinggi, rendah daya, biaya rendah embedded system (biasanya 100-500 MHz pada 2008). ARM Ltd., which licenses intellectual property rather than manufacturing chips, reported that 10 billion licensed chips had been shipped as of early 2008. ARM Ltd, yang lisensi kekayaan intelektual daripada manufaktur chip, melaporkan bahwa 10 miliar berlisensi keripik telah dikirimkan pada awal 2008. Berbagai generasi, varian dan implementasi dari ARM inti yang digunakan di lebih dari 90% dari ponsel elektronika perangkat, termasuk hampir semua ponsel modern, mp3 player dan video player portabel. Beberapa contoh adalah tinggi profil
  • Apple iPods (custom ARM7TDMI SoC)
  • Apple iPhone (Samsung ARM1176JZF )
  • Palm and PocketPC PDAs and smartphones (Marvell XScale family, Samsung SC32442 - ARM9)
  • RIM Blackberry smartphone/email devices.
  • Nintendo Game Boy Advance (ARM7TDMI)
  • Nintendo DS (ARM7TDMI, ARM946E-S)
  • Sony Network Walkman (Sony in-house ARM based chip)
  • T-Mobile G1 (HTC Dream Android, Qualcomm MSM7201A ARM11 @ 528MHz)
  • MIPS dari MIPS line, kebanyakan ditemukan di SGI komputer dan PlayStation, PlayStation 2, Nintendo 64 (dihentikan), PlayStation Portable konsol game, dan pemukiman gateways seperti Linksys WRT54G seri.
  • IBM dan dari Freescale (formerly Motorola SPS) Power Arsitektur, digunakan di seluruh dari IBM supercomputers, midrange server dan workstation, di Apple's PowerPC berbasis Macintosh komputer (dihentikan), di Nintendo 's gamecube dan Wii, Microsoft' s Xbox 360Sony ' s PlayStation 3 game konsol, EMC 's DMX jangkauan dari Symmetrix SAN, dan tertanam dalam berbagai aplikasi seperti printer dan mobil. dan Sun 's SPARC line,ditemukan di sebagian besar mereka kemudian mesin
  • Hewlett-Packard's PA-RISC, yang juga dikenal sebagai HP-PA, dihentikan 31 Desember 2008.
  • Alpha, yang digunakan dalam satu-board komputer, workstation, server dan supercomputers dari Digital Equipment Corporation, Compaq dan HP, dihentikan pada 2007.
  • XAP prosesor yang digunakan dalam banyak rendah daya nirkabel (Bluetooth, wifi) keripik dari CSR.
  • Hitachi 's SuperH, pada awalnya menggunakan lebar di Sega 32X Super, Saturn dan Dreamcast, yang kini di jantung banyak perangkat elektronik konsumen. SuperH yang merupakan dasar untuk platform Mitsubishi - Hitachi bersama semikonduktor grup.Dua kelompok bergabung pada tahun 2002, menurun Mitsubishi sendiri arsitektur RISC, yang M32R.
  • Atmel AVR digunakan dalam berbagai macam produk mulai dari termasuk Xbox genggam pengendali untuk mobil BMW.

Sumber: Klik disini


Rabu, 17 Juni 2009

Pemrograman Strategi untuk Multicore Prosesor: Pipelining






General Principles

Yang paling mudah untuk mempercepat operasi prosesor adalah untuk pipa itu. Pipelining adalah satu bentuk parallelism, di mana beberapa petunjuk pelaksanaan dapat interleaved pada perangkat keras yang sama. Untuk mengisolasi pipa yang lainnya dari setiap tahapan, pipa register ditambahkan pada batas dari tahapan. The operasi (pada tingkat tinggi) dapat dibayangkan sebagai transfer sehingga mendaftarkan diri untuk meminjamkan cukup mudah diambil dalam bahasa deskripsi perangkat keras.

sumber: klik disini

Ketika pemrograman aplikasi multicore, pertimbangan khusus harus dibuat untuk baju zirah kuasa hari ini prosesor. This paper discusses pipelining, which is a technique that can be used to gain a performance increase (on a multicore CPU) when running an inherently serial task. Makalah ini membahas pipelining, adalah teknik yang dapat digunakan untuk mendapatkan kinerja yang meningkat (pada multicore CPU) ketika menjalankan tugas inherently serial.

Aktivitas

Hari ini di dunia multicore prosesor multithreaded dan aplikasi, pemrogram perlu terus berpikir tentang cara terbaik baju zirah kuasa pemotongan-tepi CPU ketika mengembangkan aplikasi. Although structuring parallel code in traditional text-based languages can be difficult both to program and visualize, graphical development environments such as National Instruments LabVIEW are increasingly allowing engineers and scientists to cut their development times and quickly implement their ideas. Meskipun struktur paralel kode tradisional berbasis teks bahasa bisa sulit untuk kedua program dan memvisualisasikan, grafis lingkungan seperti pembangunan Nasional Instrumen LabVIEW semakin memungkinkan para ilmuwan dan insinyur untuk memotong mereka pembangunan kali dengan cepat dan melaksanakan ide-ide mereka.

Karena NI LabVIEW adalah inherently paralel (berdasarkan dataflow), program aplikasi multithreaded biasanya tugas yang sangat sederhana. Independen tugas di blok diagram secara otomatis dijalankan secara paralel dengan tanpa tambahan diperlukan kerja dari pemrogram. Tetapi bagaimana dengan potongan-potongan kode yang tidak independen? Ketika menerapkan aplikasi inherently serial, apa yang dapat dilakukan untuk baju zirah kuasa multicore CPU?

Pengenalan Pipelining

Diterima secara luas satu teknik untuk meningkatkan kinerja perangkat lunak serial adalah tugas pipelining. Simply put, pipelining adalah proses membagi sebuah serial tugas konkret ke tahap yang dapat dieksekusi dalam sidang-line mode.

Pertimbangkan contoh berikut: seandainya anda manufaktur mobil otomatis pada sidang baris. Anda mengakhiri tugas bangunan adalah mobil yang lengkap, tapi Anda dapat terpisah beton ini menjadi tiga tahapan, yaitu: membangun bingkai, menempatkan bagian dalam (seperti mesin), dan lukisan mobil ketika selesai.

Menganggap bahwa bangunan frame, bagian instalasi, dan lukisan mengambil setiap satu jam. Karena itu, jika Anda hanya dibangun satu mobil pada satu waktu setiap mobil akan mengambil tiga jam untuk melengkapi (lihat Gambar 1 di bawah).


Gambar 1. Dalam contoh ini (non-pipelined), membangun sebuah mobil membutuhkan 3 jam untuk menyelesaikannya.

Bagaimana proses ini dapat ditingkatkan? Bagaimana jika kita menyiapkan satu stasiun untuk kerangka bangunan, satu lagi untuk bagian instalasi, dan ketiga untuk lukisan. Sekarang, sementara satu mobil sedang lukis, kedua mobil dapat memiliki bagian terinstal, dan ketiga di bawah mobil dapat bingkai konstruksi.

Bagaimana Pipelining Meningkatkan Kinerja

Meskipun setiap mobil masih membutuhkan waktu tiga bulan untuk menyelesaikan proses menggunakan baru, sekarang kami dapat memproduksi satu mobil setiap hari daripada satu setiap tiga bulan - yang 3x perbaikan throughput dari proses manufaktur mobilPerlu diketahui bahwa contoh ini telah disederhanakan untuk tujuan demonstrasi; melihat Penting Kekhawatiran bagian di bawah ini untuk rincian tambahan pada pipelining.



Gambar 2. Pipelining dapat sangat meningkatkan throughput dari aplikasi Anda.

Pipelining dasar dalam LabVIEW

Pipelining konsep yang sama seperti di dalam mobil visualized contoh dapat diterapkan untuk setiap aplikasi LabVIEW di mana Anda menjalankan tugas yang serial. Pada dasarnya, anda dapat menggunakan LabVIEW shift register dan tanggapan node untuk membuat sebuah "assembly line" dari suatu program. Konseptual ilustrasi berikut ini menunjukkan bagaimana contoh pipelined aplikasi dapat berjalan di beberapa core CPU:

Gambar 3. Timing diagram untuk pipelined beberapa aplikasi yang berjalan pada core CPU.

Kekhawatiran penting

Ketika membuat aplikasi nyata multicore menggunakan pipelining, programmer harus mengambil beberapa masalah penting ini. Dalam spesifik, balancing pipa tahapan dan meminimalkan memori antara core sangat penting untuk mewujudkan kinerja keuntungan dengan pipelining.

Tahapan balancing

Dalam kedua mobil manufaktur dan LabVIEW contoh di atas, masing-masing tahap ini diasumsikan pipa untuk mengambil jumlah yang sama untuk menjalankan waktu, kami dapat mengatakan bahwa ini adalah contoh pipa tahap seimbang. Namun, dalam dunia nyata-aplikasi ini jarang terjadi. Mempertimbangkan diagram di bawah ini, jika Tahap 1 berlangsung selama tiga kali untuk melaksanakan sebagai Stage 2, maka pipelining dua tahap hanya memproduksi minimal meningkatkan kinerja.

Non-Pipelined (total waktu = 4s):

Pipelined (total waktu = 3s):


Catatan: Peningkatan Kinerja = 1.33X (bukan hal yang ideal untuk pipelining)

Untuk memperbaiki keadaan ini, maka programmer harus pindah tugas dari Tahap 1 Tahap 2 sampai ke tahap kedua kali mengambil kira-kira sama untuk menjalankan. With a large number of pipeline stages, this can be a difficult task. Yang jumlah pipa tahapan, ini bisa menjadi tugas sulit.

Catatan: Peningkatan Kinerja = 1.33X (bukan hal yang ideal untuk pipelining)

Untuk memperbaiki keadaan ini, maka programmer harus pindah tugas dari Tahap 1 Tahap 2 sampai ke tahap kedua kali mengambil kira-kira sama untuk menjalankan. With a large number of pipeline stages, this can be a difficult task. Yang jumlah pipa tahapan, ini bisa menjadi tugas sulit.

Dalam LabVIEW, adalah membantu Anda patokan setiap tahapan pipa untuk memastikan bahwa pipa yang seimbang dengan baik. Hal ini paling mudah dilakukan dengan menggunakan struktur flat urutan dalam hubungannya dengan Tick Count (ms) fungsi seperti ditunjukkan dalam Gambar 4.

Gambar 4. Benchmark Anda tahap pipa untuk memastikan pipa yang seimbang dengan baik.

Transfer data core Antara

Hal ini untuk menghindari mentransfer sejumlah besar data antara pipa tahap bila memungkinkan. Sejak tahapan suatu pipa dapat berjalan pada prosesor terpisah core, setiap transfer data antara masing-masing tahapan dapat benar-benar menghasilkan memori fisik antara core prosesor. Dalam kasus itu dua core prosesor tidak berbagi cache (atau memori transfer melebihi ukuran cache ukuran), aplikasi pengguna akhir mungkin melihat adanya penurunan efektivitas pipelining.

Kesimpulan

Untuk meringkas, pipelining adalah teknik yang pemrogram dapat digunakan untuk mendapatkan kinerja yang meningkat dalam serial inherently aplikasi (multicore pada mesin). CPU industri kecenderungan peningkatan core per keping berarti bahwa strategi seperti pipelining akan menjadi penting untuk pengembangan aplikasi dalam waktu dekat.

Dalam rangka untuk mendapatkan performa yang paling mungkin dari pipelining, setiap tahapan harus hati-hati agar tidak seimbang satu tahap memerlukan waktu lebih lama daripada lainnya untuk menyelesaikan tahap. Selain itu, setiap transfer data antara pipa tahapan harus diminimalkan untuk menghindari penurunan kinerja karena memori akses dari beberapa core.

Sumber: Klik disini