Click here to load reader

Pengulasan arsitektur

Embed Size (px)

DESCRIPTION

Pengulasan arsitektur

Citation preview

PIPELINING DAN CACHEPengulasan Arsitektur Intel Single Core, Intel Dual Core, dan AMD Dual Core

Nama: Abirafdi Raditya PutraNPM: 50413062Kelas : 2IA04

Jurnal

Hasil Terjemahan

Pengulasan arsitektur Intel Single Core, intel Dual Core, dan AMD Dual Core Processor dan kelebihannya.ABSTRACTArsitektur komputer sudah mendekati batas teknologi dan fisik, yang mengakibatkan meningkatkan kecepatan dari core tunggal dari sebuah prosessor semakin sulit dan tidak ekonomis Alhasil, perancang arstiektur komputer mulai merancang prosessor dengan cores lebih dari satu yang bekerja independen dan menggunakan addresss space yang sama. Namun, memperbanyak core di dalam satu chip menimbulkan masalah pada koherensi cache dan memori dan juga komunikasi antar cores. AMD dan Intel telah menemukan solusi tersebut dengan mendesain ulang arsitektur prosessor, sehingga memungkinkan untuk membuat processor dengan cores lebih dari satu. Jurnal ini akan menjelaskan arsituker prossesor ber-core tunggal dan multicore.

Page | 28

I. PendahuluanPada tahun 1945, matematikawan John von Neumann, dengan bantuan dari J. Presper Eckert dan John Mauchly, membuat sebuah memo untuk mengajukan pembuatan Electronic Discrete Variable Automatic Computer, atau yang lebih dikenal sebagai EDVAC. Di memo tersebut, von Neumann menyarakan model komputer yang bersifat stored-program, atau program yang dapat disimpan. Pada arsitektur von Neumann, program adalah urutan instruksi yang disimpan secara berurutan di memori komputer. Instruksi program akan dijalankan satu per satu secara berurutan, atau disebut gaya single-threaded.Seiring waktu, perkembangan teknologi komputer mainframe telah melampaui ide yang digagaskan von Neumann. Pada tahun 1960 sudah ada operasi sistem yang bersifat time-sharing. Berjalan pada mainframe besar, operasi sistem ini pertama kali mengenalkan konsep pengeksekusian program secara concurrent atau dapat dijalankan bersama-sama dengan program yang lain. Berbagai pengguna atau user dapat mengakses satu mainframe komputer bersama-sama dan memberi perintah ke mainframe. Sistem operasi bertanggung jawab dalam memilih dan mengatur perintah yang akan diberikan ke prosessor, sehingga proses pengaturan perintah ke prosessor masih ditangani oleh pemrogram sistem operasi[1].Dalam 30 tahun terakhir, terlihat bahwa industri komputer didorong oleh semakin cepatnya prosessor ber-core tunggal; hari-hari itu akan berakhir. Prosessor ber-core tunggal akan diganti dengan prosessor multicore yang diharapkan dapat mengeksploitasi parallelism. Sistem komputer modern terbuat dari prosessor multicore, seperti Intel Dual Core. Dual Core adalah sebuah arsitektur prosessor yang memiliki dua core dalam satu prosessor. Dua cores, cache dan cache controller masing-masing core terdapat dalam satu Integrated Circuit. Sebuah prosessor Intel Dual Core dapat mengeksekusi dua threads dengan cara menjalankannya pada cores yang berbeda. Sehingga Intel Dual Core dapat meningkatkan multithreaded-troughput dan memberikan manfaat parallelism ke aplikasi yang pengaturan threadnya sudah baik[3].Sebuah Intel Dual Core prosessor adalah sebuah integrated circuit dengan dua cores. Ini memungkinkan sistem operasi bisa melakukan banyak pekerjaan dalam waktu yang sama atau multitask, atau melakukan dua fungsi yang berbeda dalam waktu bersamaan. Semua ini dilakukan pada tingkat hardware, tidak seperti sebelumnya, yaitu pada tingkat sistem operasi. Dual Core dapat menugaskan satu core untuk operasi background, seperti service dan satu core lagi untuk foreground, yaitu thread yang merupakan prioritas, seperti aplikasi yang sedang kita gunakan. Agar suatu komputer dapat menggunakan cores lebih dari satu, maka operasi sistemnya harus mempunyai thread-level-parallelism (TLP), yaitu, kemampuan untuk dapat mengirim instruksi ke prosessor sebelum mendapatkan hasil dari instruksi sebelumnya. Sistem operasi modern seperti Linux dan Windows mempunyai TLP. Walaupun sebenarnya Intel Dual Core adalah dua prosessor dalam satu chip, keuntungan-keuntungan yang didapat bukan hanya dari menghemat ruang, melainkan lebih jauh dari itu[8].II. Thread Level ParallelismSebuah thread adalah sebuah alur program atau instruksi yang diberikan suatu program ke prosessor untuk dijalakan. Semua program atau process memiliki thread utama; thread utama adalah logika atau alur dari program tersebut. Aplikasi yang memiliki banyak threads adalah aplikasi yang memiliki banyak logika dan alur program secara terpisah. Setiap thread dieksekusi secara independen dan secara serentak dengan instruksi dan alurnya masing-masing. Sebuah process yang memiliki banyak thread disebut multithreaded.Threads melaksanakan perintah-perintah secara bersama-sama dari sebuah program. Threads bisa digunakan untuk menyederahakan suatu struktur program sama seperti fungsi dan prosedur yang dienkasuplasi. Threads bisa mengenkapsulasi fungsi-fungsi yang dijalankan secara bersama-sama dan menggunakan resource yang lebih sedikit dibandingkan dengan suatu program yang memiliki banyak processes. Semua ini membantu sistem operasi untuk dapat melihat struktur program secara lebih simpel. Threads bisa meningkatkan throughput dan performa dari sebuah aplikasi jika digunakan secara benar. Setiap thread ditugaskan untuk melakukan perintah-perintah yang lebih kecil. Sebuah thread juga dapat memberikan prioritas bagi perintah-perintah yang lebih kecil tersebut[6].A. Implementasi Model ThreadsAda tiga implementasi model untuk threads:a) User atau application level thread adalah sebuah proses atau thread yang melakasanakan instruksi dari sebuah program atau library yang bersangkutan. Mereka tidak berurusan dengan kernel sistem operasi sehingga tidak bisa diatur dan dilihat. Sehingga jika terdapat ribuan threads users, resource system tidak akan terganggu.

b) Kernel level thread dalah proses atau thread yang membuat system-call seperti mengakses resource yaitu DVD-ROM dll atau memberikan exception. Kernel level threads berada pada daearah kernel dan kernel objects. Dengan kernel threads, tiap user thread akan dipasangkan dengan kernel thread. Kernel thread dan user thread adalah satu kesatuan, jika salah satu di terminate, maka kedua thread tersebut akan mati. Pengeksekusian akan meminta kernel level thread untuk setiap user level thread. Manejemen memori sistem operasi dan penjadwalan thread akan mengatur tiap thread yang akan diekseskusi.c) Hybrid threads adalah kombinasi dari user dan kernel threads. Implementasi hybrid threads memungkinkan sebuah thread diatur oleh sistem operasi dan juga library runtime atau library lain. Satu dari banyak perbedaan dari implementasi-implementasi tersebut adalah mode dimana mereka berada dan kemampuan threads tersebut untuk ditugaskan ke prosessor. User dan kernel threads juga menjadi penting pada saat menentukan model penjadwalan dan contention scope. Contention scope menentukan seberapa banyak threads menggunakan resource prosessor, dan juga menjadi sangat penting bagi manajemen memori sistem operasi.III. Arsitektur dari Sebuah Prosessor ber-core TunggalPentium 4 prossesor mewakili prossesor ber-core tunggal untuk desktop dan laptop dari Intel, dikenalkan pada 20 November 2000 dengan kecepatan 1.5 GHz dan berhenti dipasarkan pada 8 Agustus 2008. Mereka adalah arsitektur x86 generasi ke-7 besutan intel, disebut Netburst, ini adalah design terbaru sejak perkenalan arsitektur P6 dari prosessor Pentium Pro pada tahun 1995.Pentium 4 didesain untuk memberikan performa yang baik bagi untuk semua aplikasi. Seperti contoh, browsing, menonton video, audio, pemrosesan gambar, video-editing, games, multimedia dan juga multitasking user environments. Pentium 4 menyediakan real-time MPEG2 video encoding dan hamper real-time MPEG4 video encoding, sehingga dapat memberikan video editing dan video conferencing secara efisien. Pentium 4 memberikan performa world-class pada aplikasi 3D dan games, seperti Quake 3, memungkinkan level baru kenyataan dan kualitas visual terhadap aplikasi 3D[8].Pentium 4 memiliki 42 juta transistors yang diimplementasikan pada proses manufaktur Intel 0.18u CMOS; dengan enam level alumunium interconnect, memiliki die area sebesar217 mm2 dan mengkonsumsi 55 watt pada kecepatan 1.5 GHz, memiliki 3.2 GB/second system bus yang membantu memberikan bandwidth data yang besar untuk aplikasi pada masanya dan masa yang akan mendatang. Pentium 4 menambahkan 144 instruksi baru ke 128-bit Single Instruction Multiple Data (SIMD) yang disebut SSE2 (Streaming SIMD Extension 2) yang meningkatkan performa multimedia, kreasi konten, scientific, dan aplikasi engineering. A. The Netburst MicroarchitecturePentium 4 adalah prosessor dengan pipelining yang dalam, mendukung banyak masalah dengan spekulasi. Pentium 4 menggunakan aggressive out-of-order speculative microarchitecture yang disebut Netburst. Netburst bertujuan untuk meningkatkan instructions throughput dengan mengkombinasikan berbagai masalah dengan clock yang tinggi. Tidak seperti arsitektur pada Pentium III[7].Prosessor ini membutuhkan keseimbangan dan pengaturan dari banyak fitur mikroarsitektur yang dilihat dari biaya, validasi, dan desain. Fig 1 menunjukkan arsitektur dasar dari arsitektur Netburst dari Intel Penitum 4. Ada empat bagian utama pada diagram arsitektur Pentium 4a) In-order front endb) Out-of-order execution enginec) Integer and floating-point execution units.d) Sistem memori pada Pentium 4 Fig. 1: Diagram blok sederahana dari Intel Netburst1) In-Order-Front-End: in-order-front-end adalah bagian dari Netburst yang berguna untuk menangkap instruksi yang akan dieksekusi berikutnya dan menyiapkannya untuk pipeline berikutnya, dan juga untuk menyuplai data ber-bandwidth besar ke out-of-order-execution core. Front end memiliki branch prediction yang sangat akurat dengan menggunakan riwayat eksekusi sebelumnya untuk menebak dan menspekulasi kemana program akan berjalan. Isi dari address dari instruksi yang sudah ditebak akan diambil dari Level 2 (L2) cache. Instruksi-instruksi IA32 selanjutnya akan diterjemahkan ke operasi sederhana yang disebut micro-operations yang bisa dieksekusi oleh core[5]. Mikroarsitektur NetBurst mempunyai instruksi Level1 (L1) cache yang canggih, yang disebut Execution Trace Cache. Tidak seperti instruksi cache konvesional, Trace Cache berada diantara penterjemah instruksi dan core. Di lokasi ini Trace Cache dapat menyimpan instruksi IA-32 yang sudah diterjemahkan atau micro-operations. Biasanya intruksi-instruksi tersebut akan diterjemahkan sekali dan diletakkan pada Trace Cache dan selanjutnya akan digunakan secara terus menerus seperti instruksi pada umumnya seperti pada arsitektur instruksi cache sebelumnya. Penterjemah IA-32 hanya digunakan pada saat prosessor tidak berhasil menghubungi Trace Cache dan data disimpan pada L2 untuk dicoba diterjemahkan kembali. Penterjemah Front End menterjemah setiap instruksi IA-32 ke instruksi micro-operations, yang juga mirip dengan instruksi dari Reduced Instruction Set Computing. Micro operations akan dieksekusi oleh pipeline yang secara dinamis menjadwalkan dan memilih micro-operations yang akan dieksekusi. Trace Cache adalah sebuah tipe instruksi yang memegang urutan dari instruksi yang akan dieksekusi, termasuk setiap percabangan; Trace Cache mencoba untuk mengeksploitasi pengurutan yang sementara dari instruksi-instruksi yang akan dieksekusi daripada mengeksploitasi mengenai ruang pada cache normal.2) Out-of-Order Execution Logic: out-of-order execution engine adalah dimana instruksi akan disiapkan untuk dieksekusi. Out-of-order execution memiliki beberapa memori atau buffers yang digunakan untuk melancarkan dan menata ulang instruksi untuk mengoptimalkan performa pada saat mereka ingin masuk ke proses penjadwalan eksekusi. Instruksi ditata ulang secara agresif untuk memungkinkan mereka dieksekusi secepat mungkin sesaat operand mereka sudah siap. Out-of-order execution membolehkan instruksi untuk melewati instruksi yang ditahan atau di-delayed (seperti pada saat operand mereka belum siap) selagi instruksi tersebut tidak bergantung pada instruksi yang di-delayed. Out-of-execution memungkinkan sumber daya eksekusi seperti ALU dan cache untuk bekerja sesibuk mungkin sesaat instruksi-instruksi siap dieksekusi. Retirement logic adalah modul yang menata ulang instruksi, yang dilakukan secara out-of order, yaitu kembali ke keadaan awal atau semula. Retirement logic menerima status penyelesaian dari instruksi yang sudah dieksekusi dan memroses hasilnya sehingga di-retire sesuai dengan arsitekurnya. Pentium 4 dapat me-retire hingga tiga micro-operations per clock cycle. Retirement logic menjamin bahwa exception akan terjadi jika operasi yang menyebabkannya adalah operasi yang tertua dan belum di-retire. Retirement logic juga melaporkan hasil penebakan percabangan atau branch prediction ke front end, sehingga mereka bisa berlatih riwayat yang mana yang paling baik[5].

3) Integer and Floating-Point Execution Units: Execution units adalah dimana instruksi akan sebenarnya dieksekusi. Bagian ini meliputi register files yang menyimpan nilai dari data operand integer dan floating-point yang selanjutnya akan dieksekusi. Execution units memiliki beberapa tipe dari integer dan floating point execution units yang menghitung hasil dari sebuah eksekusi dan juga L1 data cache yang digunakan untuk operasi store dan load.

4) Memory Subsystem: Memory Subsystem yang ditunjukkan pada fig 1, mempunyai L2 cache dan system bus. L2 cache menyimpan isntruksi dan data yang tidak bisa disimpan pada Trace Cache dan juga L1 data cache. System bus eksternal terhubung ke bagian belakang L2 cache dan digunakan untuk mengakses main memory pada saat L2 cache mengalami cache miss, dan juga untuk mengakses sumber daya input output sistem[4].

IV. Pengulasan dari Processor Multicore

Prosessor multi-core adalah evolusi terbaru di bidang teknologi komputer. Sebuah prosessor multicore memiliki core dua atau lebih yang independen. Bisa diartikan sebagai dua atau lebih prosessor yang disebut cores pada satu integrated circuit. Pembuat prosessor biasanya mengintegrasikan cores tersebut ke dalam satu integrated circuit, yang dikenal sebagai Chip Multiprocessors (CMPs). Sebuah Dual Core prosessor mempunyai dua cores (Seperti, AMD Phenom X2, AMD Turion II P520 Dual-Core, Intel Pentium Dual-Core dan Intel Core 2 Duo), sebuah quad-processor memiliki empat cores (seperti, AMD Phenom II X4 dan Intel Core seri 2010), sebuah hexa-core processor memiliki 6 cores (Seperti AMD Phenom II X6 atau Intel Core i7 Extreme Edition 980X). Prosessor multicore mengimplementasikan kemampuan multiprocessing dalam satu paket fisik. Designer prosessor dapat mendesain cores tersebut secara terpisah maupun harmonis, contohnya, cores dapat atau tidak dapat mengakses cache yang sama[8].Di dunia digital sekarang, permintaan untuk simulasi 3D yang kompleks, streaming file media, penambahan keamanan, user interface yang lebih canggih, database yang lebih besar mulai melewati batas kemampuan prosessor ber-core tunggal. Prosessor multicore memungkinkan true multitasking. Pada prosessor ber-core tunggal, multitasking dapat sangat memberatkan prosessor, menyebabkan penurunan performa karena operasi-operasi harus menunggu untuk diproses. Pada prosessor multicore, karena setiap core memiliki cache masing-masing, sistem operasi mempunyai sumber daya yang cukup untuk menangani perintah yang bersifat parallel.Perkembangan terbaru pada arsitektur prosessor melibatkan meletekkan lebih dari satu prosessor ke satu chip. Desain multicore telah sepenuhnya menggantikan desain prosessor ber-core tunggal yang sudah ada sejak pertama kali desktop computer ada. IBM, Sun, Intel, dan AMD telah mengubah desain prosessor mereka dari ber-core tunggal menjadi multicore. Semua ini mengubah vendor-vendor komputer seperti Dell dan HP untuk memfokuskan ke komputer yang menggunakan multicore.Pemrograman multicore menunjukkan bahwa pendekatan terhadap mendesain dan mengimplementasikan aplikasi atau software yang memanfaatkan kelebihan prosessor multicore sangat jauh berbeda dengan pendekatan yang digunakan pada prosessor ber-core tunggal. Fokus pengembangan desain software dan aplikasi harus berubah dari sekuensial menjadi parallel dan multithreaded. Walaupun pemrograman sekuensial dan aplikasi atau software dengan desain untuk prosessor ber-core tunggal masih ada dan masih akan terus hidup, pendekatan multicore untuk desain software dan aplikasi sekarang sudah menjadi mainstream[6]. Fig. 2: Konfigurasi Arsitektur dari Multiprocessing

A. Arsitektur Multicore. Chip Multiprocessors (CMPs) tersedia dalam banyak pilihan: dua prosessor (dual core), empat prosessor (quad core), enam prosessor (hexa core), dan delapan prosessor (octa core). Sebagian pilihan mempunyai hyperthreading, sebagian tidak. Ada beberapa variasi bagaimana pendekatan cache dan memory pada CMPs. Pendekatan komunikasi prosessor antar prosessor pun juga memiliki implementasi yang berbeda-beda. Implementasi bagaimana menangani I/O dan FSB dari setiap produsen prosessor pun juga berbeda-beda. Perbedaan-perbedaan tersebut tidak akan terlihat jika kita membuat aplikasi atau software multicore dan multithreaded dan melihatnya dari sisi logic/logisnya. Fig. 2 akan mengilustrasikan tiga konfigurasi multicore yang biasa digunakan[6].

Konfigurasi 1 pada Fig. 2 menggunakan hyperthreading. Seperti multiprosessor chip, sebuah prosessor hyperthreaded memungkinkan dua atau lebih threads dieksekusi pada satu chip. Namun, dalam sebuah prosessor hyperthreaded, cores yang hyperthreading adalah cores logis bukan fisik. Ada penduplikasian beberapa modul menyerupai sebuah core, namun tidak layak disebut true core. Jadi hyperthreading memungkinkan prosessor untuk mempresentasikan dirinya ke sistem operasi memiliki banyak thread, walaupun secara fisik hanya memiliki cores yang lebih sedikit. Konfigurasi 2 pada Fig. 2 adalah implentasi yang klasik. Pada fig ini, setiap prosessor terletak pada chip yang berbeda dan hardware masing-masing. Konfigurasi 3 merepresentasikan tren yang sekarang ada pada multiprosessor. Menyediakan multicores pada satu chip.Yang penting untuk diingat adalah setiap konfigurasi merepresentasikan dirinya sebagai sistem dengan multicore, yang mampu mengekseskusi beragaran perintah secara bersamaan. Tantangan sebenarnya adalah untuk pemrogram sistem, kernel, dan developer software atau aplikasi untuk memanfaatkan kelebihan multicore.V. Arsitektur Prosessor Intel Core 2 DuoIntel Core 2 Duop merupakan salah satu dari banyak seri Intel multicore. Multicore dari Intel dibekali dengan hyperthreading, memberikan satu core fisik menjadi dua core logical. Salah satu Multicore pertama Intel adalah Intel

Pentium Processor Extreme Edition, diluncurkan pada April 2005, memiliki dua cores dan hyperthreading, memberikan delapan cores logical kepada sistem operasi. Selanjutnya, multicore Core 2 Duo diperkenalkan pada 2006, bukan hanya menawarkan multicores, namun multicores yang lebih sedikit mengkonsumsi listrik, Core 2 Duo tidak menggunakan hyperthreading namun mendukung arsitektur 64 bit. Fig. 3 menunjukkan diagram logis dari Intel Core 2 Duo, memiliki dua cores 64 bit dan dua 64KB L1 cache, satu untuk tiap cores. L2 cache dapat digunakan oleh setiap cores dan memiliki kapasitas hingga 4 MB. Salah satu core bisa menggunakan L2 cache hingga 100 persen, yang artinya jika salah satu core membutuhkan lebih banyak L2 cache, maka core yang tidak begitu membutuhkan akan mengurangi penggunaan L2 cache.

Fig. 3: Block diagram of Intel Core 2 Duo Processor Architecture

1) Northbridge dan Southbridge:Selain CPU atau prosessor, komponen paling penting selanjutnya adalah chipset. Chipset, yang ditunjukkan pada Fig. 3, adalah sekelompok intregated circuits yang didesain bekerja bersama-sama untuk menghubungkan berbagai komponen pada motherboard ke prosessor. Chipset terintegrasikan ke motherboard sehinggan tidak bisa diganti dan dilepas. Chipset dibuat untuk bekerja dengan prosessor-prosessor tertentu agar dapat mengoptimalkan performa. Chipset memindahkan data ked an dari prosessor ke berbagai komponen di komputer, termasuk memory, graphics card, dan perangkat input output, seperti yang ditunjukan pada Fig. 3. Semua komunikasi ke prosessor harus melewati chipset. Chipset terdiri dari dua bagian, yaiu: Northbridge dan Southbridge. Nama ini diadopsi berdasarkan dari lokasi dari chipset tersebut. Northbridge terletak di bagian utara motherboard, dan southbridge di bagian selatan motherboard, Keduanya berperan sebagai jembatan komunikasi dan memastikan data sampai ke tujuan[6].

Northbridge, atau bisa juga disebut Memory Controller Hub, berkomunikasi langsung dengan prosessor dengan menggunakan Front Side Buse (FSB), menghubungkan prosessor dengan Peripheral Component Interconnect Express (PCI-E) dan juga main memory dengan kecepatan yang cepat dan bandwidth yang besar, dan juga terkoneksi dengan southbridge. Data harus melewati northbridge sebelum sampai southbridge.

Southbridge, atau bisa juga disebut Input/Output Controller, lebih pelan dari northbridge. Karena tidak langsung terhubung dengan prosessor, southbridge bertanggung jawab untuk keperluan yang lebih pelan, seperti perangkat I/O yaitu DVD-ROM, audio dan lain-lain. Southbridge terkoneksi ke BIOS via Serial Peripheral Interface (SPI), enam PCI-E slots dan perangkat I/O lainnya yang tidak terlihat di Fig. 3. Serial Peripheral Interface memungkinkan pertukaran data dengan kecepatan 1 bit per second dengan menggunakan master slave, atau bisa juga dengan mode full duplex, yaitu komunikasi dua arah.

2) Dual Core Cache:Cache adalah memori yang diletakkan antara main memory dengan prosessor. Walaupun cache tidak secepat register, namun cache lebih cepat dibanding dengan main memory. Cache menyimpan dapat menyimpan lebih banyak data dari register, namun tidak sebanyak main memory. Cache meningkatkan keefektifan transfer rate memory dan performa prosessor secara keseluruhan. Cache digunakan untuk menyimpan data yang akan dan baru digunakan oleh prosessor. Bagian-bagian kecil memori dari main memory akan diambil dan disimpan di cache. Program dapat menggunakan temporal locality dan spatial locality. Temporal locality adalah kecenderungan untuk mengakses instruksi atau data yang baru dieksekusi. Spatial locality adalah kecenderungan untuk mengakses instruksi atau data yang secara fisik dekat dengan yang baru saja diakses.Salah satu dari fungsi utama cache adalah mengambil keuntungan dari karakteristik temporal dan spatial locality sebuah program. Cache sering dibagi menjadi dua level, yaitu: Level 1 dan level 2 (Patterson dan Henness, 2007).3) Level 1 Cache:Level 1 cache berukuran kecil dan terkadang hanya berukuran 16KB. L1 cache biasanya terletak didalam prosessor dan digunakan untuk menangkap instruksi dan data yang baru di digunakan. 4) Level 2 Cache:Level 2 cache lebih besar dan lebih pelan dari L1 cache. Sekarang, L2 cache terletak di luar prosessor, namun perlahan berubah menjadi di dalam prosessor. L2 mempunyai ukuran hingga megabytes dan meyimpan data dan instruksi yang digunakan dengan ukuran yang lebih besar dari L1. Karena L1 dan L2 lebih cepat dibanding main memory atau RAM, maka semakin cepat dalam pengaksesan data dan instruksi dibandingkan mengambilnya di main memory, sehingga kecepatan keseluruhan prosessor meningkat. Sebuah desain Dual Core prosessor dapat memiliki konfigurasi komponen seperti berikut pada setiap core fisiknya: Mempunyai cache sendiri Cache yang dibagi untuk dua core Gabungan dari dua konfigurasi diatas, tiap core memiliki cachenya masing-masing namun juga memiliki cache yang digunakan bersama-sama.Kedua core di dalam Dual Core memiliki koneksi di dalam chip itu sendiri sehingga tidak memerlukan Front Side Bus dalam komunikasinya. Kedua core tersebut harus terhubung dengan FSB.VI. Arsitektur Prosessor AMD Dual CoreAdvance Micro Devices (AMD), Inc., merilis prosessor Dual Core Opteron server/workstation pada 22 April 2005, sedangkan untuk desktop, Athlon 64 X2 dirilis pada 31 Mei 2005. Dalam pengaplikasian arsitektur multicore, AMD dan Intel menggunakan cara yang cukup berbeda. Fig. menunjukkan diagram dasar dari dual-core Opteron yang didesain oleh AMD. Setiap coresnya memiliki L2 cache yang independen, tetapi kedua cores menggunakan system request queue yang sama. Mereka juga menggunakan dual channel memory controller bersamaan dan modul Hyper-Transport untuk komunikasi keluar prosessor. Pengaksesan ke sumber daya input/output diatur oleh crossbar, atau switch, jadi setiap core dapat berkomunikasi dengan memory atau I/O dengan seefisien mungkin. Arsitektur ini bisa dibilang sebagai Symmetric Multiprocessing (SMP), dimana data dan instruksi dapat leluasa berpindah dari satu core ke core lainnya[8]. Setiap core (maupun dual-core atau core tunggal) mempunyai modul dual channel DDR memory controller tersendiri, dan core berkomunikasi dengan menggunakan point-to-point Hyper-Transport Link yang berjalan pada kecepatan 1 GHz. Bandwidth yang bisa mengalir melewati 940 pins dari Opteron 875 mencapai 30.4 GB/s. Dengan HyperTransport link, opteron 275 secara teoritis bisa mencapai 22.4 GB/s. AMD menggunakan cache coherency protocol yang dinamakan MOESI dan memungkinkan data yang digunakan pada satu core bisa digunakan pada core lainnya dengan menggunakan HyperTransport Link tanpa harus dituling ulang ke main memory dengan. Komunikasi antar core berjalan sangat cepat, sehingga meningkatkan performa.

Fig. 4: Arsitektur Prosessor AMD Dual CoreArsitektur ini sangat berbeda dengan Intel, dimana Intel menggunakan Modified, Exclusive, Shared, dan Invalid (MESI) sebagai modul cache coherencnya, yang dimana harus menggunakan Front Side Bus[2].VII. KesimpulanPersyaratan untuk berhasil membuat hardware yang ter-threaded dengan baik dan mendukung multicore tidak hanya dari tantangan manufaktur. Janji untuk pengalaman user yang lebih baik dan performa yang lebih tinggi juga bergantung pada software. Selagi kita tidak membuat software multithreaded, maka keuntungan dari prosessor multicore akan terbuang sia-sia.Multicores dapat memberikan keuntungan dalam kondisi multithreaded, tetapi sekarang masih banyak software yang masih single-threaded, yang dimana tidak akan mendapat keuntungan dari multicore atau CMP. Peningkatan performa yang bisa didapat dari sebuah system parallel atau multicore (terdiri dari n core) bergantung pada rasio waktu yang dibutuhkan antara cores untuk menyelesaikan suatu masalah yang sama. Seperti yang di ekspresikan dalam persamaan 1.1

1.1Tampaknya keberadaan arsitektur multi-core akhirnya akan mengubah secara radikal bagaimana cara program dibuat. Lebih spesifik, programmer dan develooper harus memikirkan bagaimana cara untuk menangani dan menggunakan banyak threads secara bersamaan untuk memecahkan suatu masalah. REFERENCES[1] S. Akhter, and J. Roberts, (2006); Multi-Core Programming (Increasing Performance through Software Multi-threading) Published by Richard Bowles, Library of Congress Cataloging in Publication Data, Printed in the United States of America.

[2] S. Anirban, (2006); Dual Core Processors A brief overview1, uploaded: April 12th 2006, [email protected] retrieved on April, 2011.

[3] V. Saxena and M. Shrivastava, (2009); UML Modeling and Performance Evaluation of Multithreaded Programs on Dual Core Processor, Ambedkar University (Central University), Lucknow, India, published by International Journal of Hybrid Information Technology Vol.2, No.3, July, 2009).[4] J. Emer, (2005); Microprocessor Evolution: 4004 to Pentium-4 Computer Science and Artificial Intelligence Laboratory, Massachusetts Institute of Technology, Cambridge, Massachusetts. [5] G. Hinton, D. Sager, M. Upton, D. Boggs, D. Carmean, A. Kyker and P. Roussel, (2001); The Microarchitecture of the Pentium 4 Processor, Desktop Platforms Group, Intel Corp., Intel Technology Journal Q.[6] C. Hughes and T. Hughes, (2008); Professional Multicore Programming, (Design and Implementation for C++ Developers) , Published by Wiley Publishing, Inc. 10475 Crosspoint Boulevard, Indianapolis, IN 46256, www.wiley.com

[7] D.A. Patterson and J.L. Hennessy (2007); Computer Architecture A Quantitative Approach, 4th Edition, Published by Morgan Kaufmann publications, inc. San Francisco California, Printed in the United States of America.

[8] A. I. Fasiku, (2012); Performance Evaluation of Multicore Processors, M.Tech Thesis, Federal University of Technology, Akure, Nigeria.

MASALAH DALAM UPAYA MENINGKATAN PERFORMA PROSESSOR DAN PENERAPAN SISTEM MULTICORE

I. Masalah meningkatkan frekuensi pada arsitektur ber-core tunggal.Pada tahun 2003-an, perkembangan prossesor ber-core tunggal sudah terhambat karena sudah tidak memungkinkan untuk terus menambah frequency atau clock yang dimana akan mengakibatkan: Peningkatan konsumsi listrik Peningkatan panas dari prosessor Ketidakstabilan ProsessorBerikut merupakan gambar apa yang terjadi pada konsumsi listrik jika menaikkan frekuensi

Sumber : http://techreport.com/review/7580/overclocking-the-pentium-4-520-2-8ghz-to-3-57ghz/10

Terlihat dari gambar diatas, peningkatan frekuensi Intel Pentium 4 520 dari frekuensi standar, yaitu 2.8 GHz, menjadi 3.57 GHz, menyebabkan peningkatan konsumsi listrik sebesar 44 watts. Peningkatan frekuensi lebih dari 3.57 GHz, sesuai dari artikel diatas, menyebabkan prosessor tidak stabil, dimana komputer akan mati sendiri atau tidak mau boot. Peningkatan panas yang dikeluarkan prosessor juga meningkat secara linear tergantung dari konsumsi listrik, karena semakin tinggi konsumsi listrik, maka semakin tinggi juga Thermal Design Power (TDP). Peningkatan performa yang didapat dari hanya peningkatan frekuensi terlihat cukup menjanjikan.Sumber : http://techreport.com/review/7580/overclocking-the-pentium-4-520-2-8ghz-to-3-57ghz/9Sayangnya peningkatan performa sebesar 33 persen antara Pentium 4 520 frekuensi standar, yaitu 2.8 GHz dan 3.57 GHz diikuti beberapa kekurangan: Peningkatan konsumsi listrik sebesar 44 watt. Peningkatan panas yang dikeluarkan Lebih dari 3.57 GHz, maka prosessor menjadi tidak stabil (faktor keburuntungan, setiap prosessor memiliki batas stabil yang berbeda walaupun sama jenisnya)Masalah yang nyata bagi perancang arsitektur menjadi nyata saat mereka mulai mendekati batas-batas yang tidak bisa dilewati. Terus meningkatkan frekuensi? Bagaimana cara mengatasi ketidakstabilan? Apakah peningkatan konsumsi listrik dan peningkatan panas yang dikeluarkan baik bagi konsumen?II. Keterbatasan Proses Manufaktur.Sebuah prosessor tentunya harus melewati proses manufaktur untuk dibuat. Perbedaan proses manufaktur merupakan faktor yang sangat penting dalam menentukan performa prosessor secara tidak langsung. Semakin canggih proses manufaktur, maka semakin besar Die Area, temperature yang lebih dingin, dan peningkatan clock rate/frekuensi. Die area yang lebih banyak memberikan ruang bermain lebih bagi para perancang prosessor untuk menambahkan modul dan merevisi arsitekturnya untuk meningkatkan performa prosessor. Proses manufaktur didorong oleh Moores Law, yang dimana jumlah transistor akan meningkat 2 kali lipat setiap 2 tahun.Sumber : http://en.wikipedia.org/wiki/File:Transistor_Count_and_Moore%27s_Law_-_2011.svgLalu bagaimana cara meningkatkan proses manufaktur? Topik ini merupakan topik yang sangat sulit, banyak faktor yang mempengaruhinya, namun faktor utama adalah teknologi yang tersedia. Contohnya pada masa sekarang, proses manufaktur menggunakan FinFet dibandingkan dengan planar pada masa Core 2 duo.

III. Merevisi Arsitektur Prosessor Ber-core Tunggal atau Meningkatkan Instructions Per Clock (IPC)Selain meningkatkan frekuensi, performa prosessor juga bisa ditingkatkan dengan merevisi arsitektur sebuah prosessor sehingga IPC semakin besar. Instructions per Clock atau IPC adalah seberapa banyak isntruksi yang bisa dilakukan prosessor dalam satu clock. Setiap prosessor baru pasti terdapat revisi arsitektur yang dimana otomatis akan meningkatkan IPC. Merevisi arsitektur bukanlah merupakan hal yang mudah, banyak faktor yang menentukan perevisian arsitektur prosessor, seperti:1. Die area yang tersedia (area yang tersedia dalam integreated circuit)2. Teknologi manufaktur yang belum ada. (contoh, seperti HBM pada masa kini)3. Faktor waktu dan dana riset.IV. Masalah Implementasi Multi-core SystemMenerapkan sistem multi-core ke suatu prosessor bukanlah hal yang mudah karena memang merupakan hal yang baru pada masanya. Penerapan Multi-core pada tahun 2006-an memiliki beberapa kendala seperti berikut:1. Cache Coherence2. Komunikasi antar core3. Desain arsitektur multicore atau pipelining.4. Peningkatan Die Area yang signifikan, yang dimana akan menimbulkan panas dan listrik berlebih.Menggunakan komputer atau prosessor multi-core tidak akan memberikan manfaat secara langsung, kecuali aplikasi atau software yang berjalan memanfaatkan kelebihan dari multi-core. Contoh seperti:Sumber : http://www.cse.wustl.edu/~jain/cse567-11/ftp/multcore/Logika program atau aplikasi seperti diatas, adalah salah satu contoh masalah penerapan multicore pada suatu aplikasi atau software. Program diatas akan dijalankan secara sekuensial dan hanya bekerja pada satu core atau thread. Dijalankan pada prosessor ber-core tunggal maupun multicore akan memberikan waktu proses yang sama. Sehingga tujuan utama dari multicore untuk meningkatkan performa, akan terbuang percuma.

SOLUSI PENINGKATAN PERFORMA PROSESSOR (salah satunya memperbaiki pipelining dan optimisasi cache)

SOLUSI I : Meningkatkan Frekuensi ProsessorSeperti yang sudah dijelaskan pada bagian masalah, meningkatkan frekuensi prossesor menyebabkan peningkatan panas, konsumsi listrik, dan ketidakstabilan pada prosessor. 1. Peningkatan panas, bisa ditoleransi oleh konsumen2. Peningkatan Konsumsi listrik, bisa ditoleransi oleh konsumen.3. Ketidakstabilan, tidak bisa ditoleransi oleh konsumen.Walaupun peningkatan panas dan konsumsi listrik dapat ditoleransi oleh konsumen, namun faktor tersebut memberikan dampak negative bagi suatu merek prosessor. Dan yang parahnya, ketidakstabilan merupakan pembatas yang mutlak, sehingga meningkatkan frekuensi prosessor merupakan solusi yang buruk.Solusi I tidak pantas dijadikan sebagai solusi untuk meningkatkan performa prosessor.SOLUSI II : Meningkatkan Proses ManufakturPeningkatan proses manufaktur merupakan sesuatu yang harus terus berkembang, karena merupakan salah satu faktor penting dalam ukuran performa prosessor. Berikut adalah contoh peningkatan proses manufaktur antara Tri-Gate dan FinFet

Proses manufaktur FinFet lebih unggul dari Tri-Gate. Panjang transistor pada Tri-gate paling pendek adalah 22nm, sedangkan FinFet bisa mencapai 14 nm. Selain lebih dekatnya panjang transistor sehingga memberikan ruang lebih bagi perancang prosessor, peningkatan proses manufaktur dapat mengurangi voltase yang dibutuhkan transistor sehingga mengurangi konsumsi listrik dan panas yang dikeluarkan dan juga peningkatan frekuensi atau clock rate.SOLUSI II merupakan solusi yang harus digunakan, maupun untuk prosessor ber-core tunggal maupun multicoreSOLUSI III: Merevisi Arsitektur Prosessor Ber-core Tunggal atau Meningkatkan Instructions Per Clock (IPC) Pipelining dan CacheSetiap iterasi prosessor baru, baik maupun dari Intel ataupun AMD, pasti terdapat revisi arsitektur yang akan meningkatkan IPC dan perfroma prosessor secara kesulurahan. Dikarenakan hanya meningkatan frekuensi pada arsitektur yang sudah ada akan menimbulkan banyak masalah, desainer arsitektur bisa merevisi arsitektur tersebut agar mendapakan IPC yang lebih tinggi lagi, yaitu dengan merevisi modul-modul yang terdapat pada suatu prosessor:1. Peningkatan dan optimisasi Cache2. Pipelining yang lebih baik, dengan cara mendesain ulang dan mengoptimasi jalur data dan instruksi pada semua bagian prossesor. Seperti Front end, Back End, Execution Units.3. Selain prosessor, perancang prosessor juga harus memperhatikan dunia luar, yaitu seperti revisi Bus dan Memory Controller.Merivisi arsitektur merupakan hal yang tidak bisa dihindari, namun revisi arsitektur sangat bergantung pada proses manufaktur, sehingga revisi arsitektur dan proses manufaktur bisa dibilang merupakan hal yang tidak bisa dipisahkan. Pada solusi ini, prosessor akan tetap menjadi ber-core tunggal, tetapi performanya ditingkatkan dengan perevisian arsitektur dan juga peningkatan proses manufaktur sehingga IPC dan performa prosessor meningkat. Contoh seperti berikut adalah perbedaan pipelining antara Core 2 Duo dengan Haswell.

Walaupun contoh dibawah adalah perevisian arsitektur prosessor multi-core, saya hanya memberi gambaran seberapa jauh arsitektur sebuah prosessor dapat berubah. Untuk perevisian arsitektur single-core seperti antara Pentium 4 dengan Athlon 64, saya tidak bisa menemukan gambarnya.

Gambar pipeline Core 2 Duo Dan Haswell diatas tidak dijelaskan secara detail karena akan memakan banyak halaman. Walaupun terlihat tidak berbeda jauh, namun terdapat beberapa perbedaan.

Bisa dilihat pada perbandingan arsitektur atau pipelining atau cache pada kedua prosessor diatas sangat berbeda, seperti contoh lebar pipeline jauh lebih besar, letak dan ukuran cache dan peningkatan IPC dilihat dari peningkatan lebar micro operations yang bisa dilakukan dalam 1 cycle. Inilah yang dinamakan revisi arsitektur yang dimana akan meningkatkan performa prosessor.SOLUSI III merupakan solusi yang bisa dipertimbangkan, namun masih menerapkan sistem prosessor ber-core tunggal.SOLUSI IV : Mengimplementasikan Prosesor Multicore.Pada era 2005an, perancang prosessor menyadari bahwa terus merevisi dan meningkatkan frekuensi prosessor ber-core tunggal merupakan sesuatu yang akan mencapai batasannya. Sehingga muncullah ide untuk membuat prosessor multicore, yaitu prosessor yang terdiri dari banyak cores. Penerepan sistem multicore memiliki banyak kendala, Seperti: 1. Komunikasi antar core2. Desain arsitektur multicore atau pipelining.3. Cache Coherence4. Peningkatan Die Area yang signifikan, yang dimana akan menimbulkan panas dan listrik berlebih.Untuk kendala pertama dan kedua, para perancang prossessor benar-benar mendesain ulang arsitektur prosessor untuk dapat menduking multicore, ada banyak cara atau konfigurasi yang ada pada multicore system seperti yang ditunjukkan pada jurnal diatas.

1. Konfigurasi 1, konfigurasi 1 menggunakan hyperthreading sebagai sistem multicorenya, dimana hanya terdapat satu core fisik namun memiliki control unit yang sangat kompleks sehingga secara logical memiliki banyak cores dua kali lipat lebih banyak dari cores fisiknya. Konfigurasi 1 tentu lebih baik daripada konfigurasi prosessor ber-core tunggal dikarenakan terdapat logical prosessor tambahan yang nantinya bisa digunakan.

2. Konfigurasi 2, konfigurasi 2 menggunakan satu prosessor tambahan yang diletakkan pada slot yang berbeda, sehingga di motherboard terdapat dua prosessor. Komunikasi antara dua prosessor menggunakan Bus dan Cachepun tidak bisa digunakan bersama-sama, yang mengakibatkan bottleneck atau performa prosessor ditahan oleh lambatnya komunikasi antara dua prosessor.

3. Konfigurasi 3, konfigurasi 3 bisa dibilang sebagai sistem true multicore, karena benar-benar memiliki 2 cores dalam satu buah prosessor. Komunikasi antar prosessor maupun pengaksesan cache dilakukan lewat Bus, sama seperti pada konfigurasi 2.

Sebenarnya masih ada lagi konfigurasi-konfigurasi multicore, namun yang sekarang digunakan oleh AMD dan Intel adalah sebagai berikut:1. Intel menggunakan gabungan konfigurasi 1 dan 3 dan komunikasi antar prosessor dan cache sudah tidak melalui Bus lagi, melainkan melewati pipeline yang terletak di dalam prosessor itu sendiri, sehingga kecepatan komunikasi antar core dan cache meningkat drastis. Gabungan antara konfigurasi 1 dan 3 akan memberikan jumlah cores 2 kali lipat dari cores fisiknya, contoh intel core i3 Haswell dengan hyperthreading memiliki 2 cores fisik dalam 1 prosessor, tetapi secara logical/dilihat dari sistem operasi memiliki 4 buah cores.

2. AMD juga menggunakan gabungan konfigurasi 1 dan 3, namun berbeda dengan Intel. Hyperthreading pada Intel adalah memberbanyak control unit (front-end, back-end) untuk memperbanyak logical cores, sedangkan AMD sebaliknya, ialah memperbanyak Execution units. Sebagai contoh 4 control units memiliki 8 execution units. Terdapat kelemahan pada konfigurasi ini. Dikarenakan hanya terdapat 1 control unit bagi tiap 2 execution units, jika control unit tidak begitu cepat dalam memberikan instruksi ke execution units, menyebabkan execution units tidak bekerja apa-apa atau idle. Konfigurasi ini bagus dalam aplikasi atau software yang bersifat data level parallelism, dimana instruksi yang diberikan sama, hanya datanya saja yang berbeda, karena instruksinya sama, maka 1 control unit dengan mudah memberikan instruksi ke 2 execution units yang dia miliki, dibandingkan dengan instruction level parallelism, dimana instruksinya juga berbeda, control unit dari AMD tidak cukup cepat dalam memberikan instruksi ke execution units menyebabkan performa yang lebih pelan dari Intel.

Untuk kendala nomor 3, yaitu cache coherence, Intel dan AMD sudah mengatasinya dengan cara membuat protocol baru dalam prosessornya. Cache coherence adalah koherensi data pada satu atau lebih cache yang diakses oleh lebih dari satu core, contoh jika satu core sudah melaksanakan satu instruksi, maka core yang lain harus tau hasil-hasil dari pemrosesan, seperti nilai dari hasil pemrosesan dan letak hasil pemrosesan alamat memori pada cache yang paling terbaru.Terdapat banyak protocol untuk mengatasi cache incoherency, contohnya MSI, MESI, MOSI, MOESI, MERSI, MESIF, dan masih banyak lagi. Tiap-tiap protocol memiliki cara yang berbeda untuk mengatasi cache coherency.Untuk kendala nomor 4, seperti yang sudah saya bilang, perivisian arsitektur prosessor tidak lepas dari peningkatan proses manufaktur. Untuk dapat merevisi arsitektur prosessor, maka proses manufakturnya pun harus juga sudah lebih berkembang, sehingga die area pun lebih besar, temperature lebih dingin, konsumsi listrik lebih sedikit dan frekuensi bisa lebih tinggi lagi.Solusi IV merupakan solusi mutlak yang harus dilakukan dalam penerapan sistem multicore untuk peningkatan performa prosessor.

SOLUSI V : V. Menggunakan Multi-core System pada Aplikasi atau SoftwareSeperti yang sudah dibicarakan terus menerus, kita tidak akan mendapat keuntungan multicore jika aplikasi atau software yang digunakan tidak memanfaatkannya. Untuk itu saya berikan beberapa contoh dan solusi penerapannya:Semua gambar berikut diambil dari sumber http://www.cse.wustl.edu/~jain/cse567-11/ftp/multcore/

Bisa dilihat pada contoh diatas, logika pemrograman di kanan akan meingkatkan performa sebesar 33 persen, karena instruksi 1 dan 2 bisa dikerjakan pada cores yang berbeda, sehingga cycle yang dibutuhkan pun berkurang. Berikut adalah visualisasi dan persamaan peningkatkan performa pada sistem multicoreEksekusi 4 task pada prosessor ber-core tunggal membutuhkan 4 kali waktu lebih banyak daripada sistem multicore. Dan berikut merupakan performa dalam dunia nyata.

Arti threads sama saja seperti core, seperti yang sudah dijelaskan pada jurnal. Pada tes kali diatas menggunakan Intel Quad Core dengan Hyperthreading, sehingga memiliki maksimal 8 threads. Terlihat penambahan performa dengan menggunakan multicore system hingga sebesar 86%. Namun kenapa 8 threads lebih pelan dari 4 threads? Karena disini 4 threads tambahan adalah HyperThreading, terkadang beberapa aplikasi atau software jika menggunakan HyperThreading tidak selalu memberikan performa tambahan atau justru mengurangi performa, karena pada dasarnya HyperThreading adalah control Unit tambahan, sehingga aplikasi atau software yang sudah benar-benar sangat efisien dalam memberi perintah ke prosessor akan tidak mendapatkan keuntungan dari HyperThreading.Terdapat dua persamaan dalam menghitung kecepatan yang didapat dalam menggunakan sistem multi-core:

SOLUSI V merupakan solusi yang harus dilakukan untuk mendapatkan keuntungan multicore secara penuh.KesimpulanDari solusi-solusi diatas, maka bisa disimpulkan untuk meningkatkan performa prosessor adalah menjadikannya sebagai multi-core, merevisi arsitekturnya (termasuk pengubahan dan perevisian pipelining dan optimisasi cache), dan mulai membuat program yang memanfaatkan kelebihan multicore. Sejarah berbicara, maka lahirlah prosessor-prosessor dengan karakteristik tersebut. Munculnya Intel Core Series atau AMD Bulldozer merupakan contoh dari penerapan sistem multi core dan perevisian arsitektur, pipelining, dan cache. Penting bagi saya sebagai mahasiswa teknik informatika untuk memanfaatkan kelebihan sistem multicore yang perancang prosessor sudah buat, yaitu dengan membuat software dan aplikasi yang bersifat multithreaded.