PROCESSOR ARCHITECTURE
MTPA
Donny Cahyoprapto 23509111
Agi Putra Kharisma 23510002
Hariyady 23510040
Husnil Kamil 23510073
Zulkifli Arsyad 23510079
Outline
• Pendahuluan (konsep thread, proses, multithreading,
tantangan pada prosesor multicore)
• Parallelism yang dieksploitasi serta permasalahan yang
diatasi oleh MTPA
• Struktur dan Arsitektur MTPA serta perbedaan dengan
prosesor multicore konvensional.
• Operasi, instruction set, thread management, dan memory
system MTPA
• Pemrograman MTPA
• Evaluasi
• SMASim (Simulator)
• Kesimpulan
Thread
• Merupakan unit eksekusi terkecil dari proses yang masih
dapat dikontrol oleh OS [wiki]
• Implementasi thread berbeda untuk setiap OS
• Thread berada dalam sebuah proses, multiple thread bisa berada
dalam proses yang sama dan saling berbagi resource
• Multithread biasanya terjadi secara time-division multiplexing pada
single processor.
Thread
Process
• Unit terberat dalam kernel scheduling
• Memiliki resources
• Penjadwalan eksekusi
Process vs Threads
• Threads muncul sebagai bagian dari process
• Process memiliki lebih banyak informasi. Thread yang
ada dalam proses saling berbagi informasi yang dimiliki
oleh prosesnya
• Proces memiliki address address space yang terpisah,
thread saling berbagi address space
• Proces berinteraksi hanya melalui mekanisme inter-
process communication yang ada pada system
• Context switching antar threads dalam satu proces lebih
cepat dari pada context switching antar proces
Multithreading
• Banyak thread ada dalam suatu context
• Share resources but are able to execute independently
• Threads will often need to rendezvous in time in order to
process the data in the correct order.
Kelebihan Multithreading
• Mampu memanfaatkan computing resource yang tidak
dipakai
• Jika thread tidak bisa menggunakan seluruh computing
resource CPU, menjalankan thread lain tidak membuat
thread tsb idle.
• Jika beberapa thread bekerja pada data set yang sama,
thread tersebut dapat saling berbagi cache sehingga
dapat memperbaiki penggunaan cache dan sinkronisasi
Kekurangan Multithreading
• Multiple thread dapat saling menginterfensi ketika sharing
hardware resouce (cache, TLB)
• Waktu eksekusi sebuah thread tidak akan meningkat
walaupun hanya satu thread yang dieksekusi.
• Karena frekuensi yang lambat atau pipeline stage tambahan yang
dibutuhkan untuk mengakomodasi thread switching hardware.
• Hardware untuk multithreading perlu didukung oleh
software
• membutuhkan aplikasi program dan OS yang bersifat
multiprocessing.
Kapan thread di switch?
• Fine grain:
• Switch instruksi per thread menggunakan round robin.
• coarse grain:
• Ketika thread stall.
Tipe Multithreading
• Block Multithreading
• Interleaved Multithreading
• Simultenous Multithreading
Block Multithreading
• Terminology
Block atau Cooperative atau Coarse-grained multithreading.
• Konsep:
• Setiap thread berjalan sampai diblock oleh suatu event yang menyebabkan thread mengalami stall dalam
waktu yang cukup lama. Threaded processor akan melakukan switch ke thread yang lain yang siap untuk
dijalankan.
• Hardware Cost
• Dapat diimplementasikan pada single CPU
• Setiap thread yang active memiliki registernya sendiri. Agar mudah melakukan perpindahan antar active
thread
• Contoh:
• Cycle i : instruksi j dari hread A diisue
• Cycle i+1: instruksi j+1 dari thread A diissue
• Cycle i+2: instruksi j+2 dari thread A dissue, instruksi menyebabkan miss di seluruh cache
• Cycle i+3: thread scheduler dipanggil, switch ke thread B
• Cycle i+4: instruksi k dari thread B diissue
• Cycle i+5: instruksi k+1 dari thread B diissue
Interleaved Multithreading
• Terminology :
• Barrel processing, Interleaved atau Pre-emptive atau Fine-grained atau time-
sliced multithreading
• Tujuan :
• menghilangkan stall karena data dependency karena eksekusi. Umumnya satu thread
independent dengan thread lainnya
• Hardware cost :
• interleaved multithreading memiliki tambaan cost untuk setiap pipeline stage untuk
melakukan tracking thread ID setiap instruksi yang diproses.
• Shared resources (caches and TLB) butuh ukuran yang besar
• Contoh :
• Cycle i+1: instruki dari thread B diiisue
• Cycle i+2: instruksi dari thread C dissue
Simultaneous Multithreading (SMT)
• Superscalar processor bisa mengissue instruksi dari multiple thread
untuk setiap CPU cycle
• Setiap thread memiliki ILP yang terbatas, SMT berusaha memberikan solusi dengan
mengekploitasi paralelism dari multiple thread
• For example:
• Cycle i : instructions j and j+1 from thread A; instruction k from thread B all
simultaneously issued
• Cycle i+1: instruction j+2 from thread A; instruction k+1 from thread B; instruction m
from thread C all simultaneously issued
• Cycle i+2: instruction j+3 from thread A; instructions m+1 and m+2 from thread C all
simultaneously issued
• Hardware Cost :
• Setiap pipeline stage melakukan track Thread ID setiap instruksi yang diproses
• Shared resources (caches, TLBs) harus memiliki ukurang yang besar
Tantangan Pada Prosesor Multicore
• Cache Coherence
• Lamport’s Sequential Consistency
Cache Coherence
• Bagaimana mempertahankan konsistensi data yang
disimpan pada cache resource bersama.
Lamport’s Sequential Consistency
• "... the result of any execution is the same as if the
operations of all the processors were executed in some
sequential order, and the operations of each individual
processor appear in this sequence in the order specified
by its program."
Overview MTPA
• Gambaran umum
• Parallelism yang dieksploitasi
• Prosesor MTPA VS Prosesor Konvensional
• Permasalahan prosesor multicore yang diatasi
- Struktur MTPA
- Arsitektur MTPA
Gambaran umum
• Pendekatan baru multicore processor architectures
• Paradigma moving threads
• Thread bergerak diantara core prosesor dan mengakses
memory utama melalui local memory block.
• Masalah cache coherence
• Konsistensi data yang disimpan dalam cache lokal dari sumber
daya bersama.
• Lamport’s sequential consistency
• Hasil eksekusi tetap sama seperti jika operasi dari semua prosesor
dieksekusi dalam beberapa berurutan, dan operasi dari setiap
prosesor individu muncul dalam urutan yang ditentukan oleh
program.
Parallelism yang dieksploitasi
• Instruction Level Parallelism
• Threads Level Parallelism
Instruction Level Parallelism
• Loop unrolling
• Branch Prediction
• Dynamic Scheduling
Loop unrolling
Hazards:
Hazards:
25
Threads Level Parallelism : T1 Fine-
Grained Multithreading
Setiap core mendukung
empat threads dan
memiliki tingkat sendiri Beralih ke thread baru Idle threads dilewati
satu cache (16KB untuk pada setiap siklus clock dalam penjadwalan
instruksi dan 8 KB untuk
data)
Menunggu akibat
penundaan
pipeline atau cache
miss
Processor idle
hanya ketika
semua 4 threads
yang idle atau
stalled
26
Threads Level Parallelism : T1 Fine-
Grained Multithreading
Baik loads and branches
dikenakan penundaan 3 Satu set floating point unit
siklus yang hanya dapat fungsional dibagi oleh semua
disembunyikan oleh thread 8 core A
lain
Kinerja
floating
point tidak
fokus untuk
T1
27
Perbedaan prosesor MTPA dengan Konvensional
• Cache Coherence
• Lamport’s Sequential Consistency
Contoh Masalah Cache Coherence
P1 P2 P3
u=? 3
u=?
4 5 $
$ $
u :5 u :5 u = 7
I/O devices
1
2
u :5
Memory
30
User Level Sinkronisasi — Operasi Menggunakan
Primitif
lockit:
li R2,#1
R2,#1
exch R2,0(R1) ;atomic exchange
exchange
31
User Level Sinkronisasi — Operasi Menggunakan
Primitif
• dimulai
dimulai dengan hanya berulang kali membaca variabel tersebut; ketika
perubahan,
perubahan, kemudian mencoba ditukar (“test and test&set”):
• try:
try: lili R2,#1
R2,#1
lockit:
lockit: lw R3,0(R1)
lw R3,0(R1) ;load
;load var
bnez
bnez R3,lockit ;≠ 0 not free
R3,lockit ;≠ spin
Solution exch
exch R2,0(R1)
bnez
R2,0(R1) ;atomic
bnez R2,try
R2,try
;atomic exchange
;already
;already locked?
32
Permasalahan lain MP: Memori Model
Konsistensi
33
Permasalahan lain MP: Memori Model
Konsistensi
34
Model Memori Konsistensi
35
Model Memori Konsistensi
Beberapa Relaxed
Models for Memory
Hanya program-program Consistency karena
tersedia secara kebanyakan program
nondeterministic tidak disinkronkan; dicirikan
disinkronkan: “data race”: oleh perilaku mereka
hasil f(proc. speed) terhadap : RAR, WAR,
RAW, WAW
ke alamat yang berbeda
36
Struktur MTPA
Arsitektur MTPA
Arsitektur MTPA
Operasi
• Thread diambil dari FIFO
queue untuk dieksekusi.
• Instruction word diambil
(fetched) dari local instruction
memory, operand dipilih dari
blok register yang
berkorespondensi, kemudian
subinstruksi dieksekusi oleh
ALU.
Operasi
Operasi
• Bila subinstruksi pada memory unit akan mengakses data
pada local memory, maka reference akan dikirimkan.
• Bila data yang diakses tidak terdapat pada local memory,
thread akan dikirim ke processor-storage modul yang
memiliki data dimaksud, dan instruksi dieksekusi ulang
(re-execute).
• Teknik ini disebut Test and Move (TM)
Operasi
Konvensional
MTPA
Operasi
• Alamat akses memori untuk instruksi selanjutnya
langsung dihitung setelah eksekusi instruksi (current
instruction), sehingga akan terjadi pemisaan eksekusi
antara source dan target module.
• Teknik ini disebut Split Instruction (SI)
Test and Move & Split Instruction
Instruction Set
• Menggunakan RISC style dengan satu atau dua operand
sederhana.
• Contoh:
• LDB Xx Load byte from address Xx
• ADDn Xx, Yy Add Xx and Xy in ALU n
• JMP Xx Jump to Xx
• CRT Rx Create a new thread with id Rx
Mekanisme Thread Management
• Thread disimpan dalam FIFO queue
• Dukungan jumlah thread dibuat fleksibel seperti konsep
virtual memory.
• Bila internal FIFO tidak mencukupi, disediakan buffer
tambahan untuk menampung thread.
• Dapat memanfaatkan memory untuk menampung thread,
namun hal ini dapat menurunkan kinerja.
Mekanisme Thread Management
• Creating thread: CRT Rx
• Disposing thread: TRM Rx
• Jumlah thread yang ada serta id-nya harus selalu di-
update oleh runtime system.
Memory System
• Menggunakan local memory
• Apabila daya tampung local memory tidak mencukupi,
sebagian atau seluruhnya dapat digantikan dengan
cache, sehingga terjadi cache-based access.
• Namun, masing – masing core hanya memiliki akses
terhadap bagian memory tertentu saja yang unik
(sehingga tidak ada cache coherence).
Memory System
MTPA
Memory System
Program
instruction
Data
memory
Programming model
PRAM & Moving thread
• Moving thread menggunakan paralel programming
dengan PRAM based (parallel random access machine)
• Ide utamanya merepresentasikan tiap tiap PRAM
processor sebagai thread bukan
read dan write request dan replies.
Introduction PRAM
w=100;
while ( w>0) {
Y = read();
w = 100; count = count =2;
while ( w>0) { FORK(L1);
y = read(); FORK(L2);
a = y * y; A = y * y;
r = y + 20; goto L4;
s = y – 10; L1: r = y + 20;
b = r * s; Goto L3;
c = a - b; L2: s = y - 1;
w = w –1; L3: JOIN(count1);
} B = r * s;
L4: JOIN(count2);
C = a - b;
w = C+ 1;}
LANGUAGE CONSTRUCTS AND COMPILATION
[2]
Parallel Programming with OpenMP
• An Application Program Interface (API) that may be used
to explicitly direct multi-threaded
• Menggunakan compiler yang Embed dalam c/c++ foltran
language.
• OpenMP uses the fork-join model of parallel execution:
•
Evaluasi
• Performance
• Silicon Area
• Power Consumption
Konfigurasi
SMASIM
A Cycle-accurate Scalable Multi-core
Architecture Simulator
SMASim
SMASim merupakan simulator software murni,
berdasarkan eksperimen multi-core moving threads
architecture, yang bekerja pada virtual parallel random
access machine (PRAM).
SMASim
• Diimplementasikan menggunakan hybrid object-functional
language Scala, dimana menggunakan notasi domain
deklaratif yang lebih spesifik ketika menentukan bagian
dari arsitektur baru.
• Memory subsystem
• Subsistem memori menyediakan komponen untuk
pemodelan berbagai jenis hirarki memori dasar
hirarki.
• Saat ini yang didukung adalah komponen memori
dengan fix latency property, bank memori yang terdiri dari
penyimpanan komponen lainnya
Subsystem libraries
• Memory Subsystem
Sebagai contoh penggunaan
memori komponen, yang digunakan ketika
membangun komponen cache.
Subsystem libraries
• Network subsystem
Subsistem ini memberikan buffered network nodes sederhana
dan topologi jaringan berbentuk bintang dengan
properti latency konstan dan kemampuan broadcast.
Subsystem libraries
• MIPS32 subsystem
Sebagai tembahan subsistem CPU, subsistem MIPS32 menyediakan
kerangka untuk mendefinisikan atau memperluas
instruksi MIPS dengan bantuan dari statically constrained domain
specific language. Dan juga berfungsi menyediakan encoders,
decoders, dan full semantic definitions, yang terdiri dari 1 set 69 core
arithmetic, logic, dan memory instructions
Subsystem libraries
• MIPS32 subsystem
Subsystem libraries
• MIPS32 subsystem
Monitoring framework
Sistem modular clock dari simulasi framework
akan mengirimkan monitor runtime ke message
passing core.