Multithreading เน อหามาจากสไลด ของ C. Batten, Cornell U. และ J. Kubiatowicz, UC Berkeley
น ยามศ พท Program หมายถ งช ดค าส งและข อม ลท จะน ามาประมวลผล เวลาพ ดถ งโปรแกรม จะเป นส งท อย น งๆ ย งไม ได ท างานอะไร Process หมายถ งโปรแกรมท ท างานแล ว สามารถม หลายๆ process มาจากโปรแกรมเด ยวได Thread เป นส วนย อยในการท างานของ process น นค อในหน ง process อาจจะม หลายๆ thread ท เป นส วนหน งของ process ได Single-threaded execution หมายถ งการประมวลผลเพ ยง thread เด ยวเท าน น Multi-threaded execution หมายถ งการประมวลผลหลายๆ thread ส าหร บการประมวลผลแบบ multi-threaded น น thread หลายๆอ นท ท างานอย อาจจะมาจาก process เด ยวก น หร อ อาจจะมาจากต าง process ก นก ได
ข อจ าก ดในการเพ ม ILP ถ าโปรแกรมม ILP ส ง CPU จะประมวลผลหลายค าส งพร อมก นได มากในหน ง cycle CPU ในป จจ บ นบ บเค น ILP จนแทบจะไม ม เหล อแล ว เป นท มาของ ILPWall ท Patterson ได กล าวไว ท จร งศ กยภาพทาง ILP ย งพอม อย แต ด วยข อจ าก ดทางฮาร ดแวร เรา ไม สามารถใช ศ กยภาพน ได อย างเต มท พ จารณาเปร ยบเท ยบผลการทดลองต อไปน
Instructions Issued per clock Instruction Window Size Renaming Registers Ideal Infinite 64 Infinite 64 Infinite 128 Branch Prediction Perfect 2-bit Realistic Cache Perfect Perfect Memory Alias Analysis Perfect Perfect
160 จ านวนค าส งท ประมวลผลได ในหน ง cycle 140 120 100 80 60 40 20 0 gcc espresso li fpppp doducd tomcatv ideal realistic
Multithreading ข ามก าแพง ILP ด วย TLP(Thread-Level Parallelism) TLP มาจากการร นโปรแกรมหลายๆอ นท เป นอ สระต อก น TLP มาจากการร น thread ท อาจจะมาจากโปรแกรมเด ยวก น(multithreading) อาจจะมาจากโปรแกรมคนละอ นก น(multiprogramming, multithreading) CPU แบบ multithreading จะอาศ ย TLP เพ อเพ ม throughput (ปร มาณงานต อหน วยเวลา)
Pipeline Hazards t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 LW r1, 0(r2) LW r5, 12(r1) ADDI r5, r5, #12 SW 12(r1), r5 F D X M W F D D D D X M W F F F F D D D D X M W F F F F D D D D ถ าค าส งท ตามหล งต องใช ผลล พธ จากค าส งท มาก อน ต อง stall ด งแสดง หร อต องม bypass network
แนวค ดใหม multithreading น าค าส งจาก thread อ นๆ เข ามาประมวลผล เม อถ งเวลากล บมาประมวลผลท thread เด ม ได ผลล พธ จากค าส งก อหน ามาแล ว ตามต วอย าง ค าส งแรกของ T1write back ท cycle t4 ซ งเป นเวลาท เร ม fetch ค าส งท สองของ T1 T1: T2: T3: T4: T1: LW r1, 0(r2) ADD r7, r1, r4 XORI r5, r4, #12 SW 0(r7), r5 LW r5, 12(r1) t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 F D X M W F D X M W F D X M W F D X M W F D X M W
โครงสร างของ pipeline P P C C P C 1 PC 1 1 1 I$ IR GPR1 GPR1 GPR1 GPR1 X Y D$ +1 2 Thread select 2 ต องแพร ส ญญาณ thread select ไปตาม pipeline เพ อจะได ร ว าขณะน ก าล งประมวล thread ใดอย ซอฟต แวร ด านบนเห นว าเสม อนม ฮาร ดแวร ท ม CPU หลายๆต ว
ส งท ต องเพ มเม อเป น multithreading แต ละ thread ต องม เป นของตนเอง PC ร จ สเตอร System state เช น Page table Register mapping table Exception handling registers ย งม overhead อ นๆของการท า multithreading ม conflict ของ cache และ TLB มากกว าปกต อาจท าให ต องใช cache และ TLB ใหญ กว าเด ม OS overhead ในการจะ schedule แต ละ thread เข ามา
Fine-Grain Multithreading Fixed interleave Thread แต ละอ นประมวลผลหน งค าส งท กๆ N cycles ถ า thread น นไม พร อม ใส bubble ใน slot น น Software-controlled interleave OS เป นคนจ ดการเล อก S slots ส าหร บ N threads ฮาร ดแวร จ ดการประมวลแบบ fixed interleave ส าหร บ S slots โดย ประมวลผล thread ท อย ใน slot น น Hardware-controlled thread scheduling ฮาร ดแวร เป นคนเล อก thread ท จะประมาลในแต ละ slot เล อก thread ไหน ส าหร บ slot ใด ตาม priority scheme ของฮาร ดแวร
Coarse-Grain Multithreading สถาป ตยกรรมบางแบบ latency ของค าส ง (เวลาในการให ได ผล ล พธ ) ม ค าท ไม ต าก ส งมากไปเลย เช น การเก ด cache miss ในค าส ง load เพ มให ฮาร ดแวร สามารถม การ swap thread เม อเก ดเหต การณ ท เพ มให ฮาร ดแวร สามารถม การ swap thread เม อเก ดเหต การณ ท ท าให latency ของค าส งม ค ามากผ ดปกต
Oracle/Sun Niagara processors เจาะตลาด datacenter ท ร น web servers ท รองร บ request จ านวนมากๆ ในเวลาเด ยวก น โครงสร างภายในม CPU หลายๆcore โดยท แต ละ core ม โครงสร าง ภายในท ไม ซ บซ อน แต ละ core ร น thread ได จ านวนมาก Single-thread performance ส พวก superscalar ไม ได ประหย ดพล งงาน Niagara-1 [2004], 8 cores, 4 threads/core Niagara-2 [2007], 8 cores, 8 threads/core Niagara-3 [2009], 16 cores, 8 threads/core
Simultaneous Multithreading (SMT) เทคน คท ผ านมาเป นแบบ vertical multithreading โดยแต ละ stage ของ pipeline ประมวลผลหน ง thread ณ เวลาใดๆ SMT จะใช กลไกท ม อย ในout-of-order superscalar CPU เพ อท า fine-grain multithreading ในระด บท เหน อกว า vertical multithreading
ส าหร บโปรแกรมท วไป execution unit ม งานท า ค อนข างน อย Percent of Tota al Issue Slots 8-way superscalar 8 issue slots per cycle โดยเฉล ย ~1.5 จาก 8 slots ถ กใช งาน From: Tullsen, Eggers, and Levy, Simultaneous Multithreading: Maximizing On-chip Parallelism, ISCA 1995.
Superscalar Machine Instruction issue Issue width Completely idle (vertical waste) cycle Time Partially filled cycle, i.e., IPC < 4 (horizontal waste)
Vertical Multithreading Instruction issue Issue width Second thread interleaved cycle-by-cycle Time Partially filled cycle, i.e., IPC < 4 (horizontal waste)
Chip Multiprocessing (CMP) Issue width Time
Ideal Superscalar Multithreading [Tullsen, Eggers, Levy, UW, 1995] Issue width Time สามารถน าค าส งจาก thread ต างๆ เข ามาเต มใน slot ท เคยจะต องส ญเส ยไปได อย างอ สระ
OOOSimultaneous Multithreading [Tullsen, Eggers, Emer, Levy, Stamm, Lo, DEC/UW, 1996] เพ ม context ของ thread เข าไป และ fetch จากหลายๆ thread ในเวลาเด ยวก น สามารถน าค าส งจากหลายๆ thread มาไว ท issue queue เด ยวก นได เพ มโอกาสในการหาค าส งท เป นอ สระต อก นเพ อจะ issue ไปพร อมก นได ไม ต องเพ มเต มฮาร ดแวร ใน OOOCPU มากน ก ถ าไม ม thread อ นๆมาร นร วมก นthread เด ยวก ครอง CPU ท งหมด และท างานได เร วข นกว าเวลาท ต องไป share CPU ก บ thread อ นๆ
การปร บต วของ CPU แบบ SMT ส าหร บส วนของโปรแกรมท ม TLP มาก Issue width ส าหร บส วนของโปรแกรมท ม TLP น อย (กล บไปใช ILP แทน) Issue width Time Time
IBM Power 4 Single-threaded OOO superscalar CPU IFAR I-cache BR Scana Instr Buffer Q BR Decode, BR Decode, Predict Crack Pred ict Crack & Group Formation Group Formation GCT GCT BR/C R Issue Q FX/LD 1 Issue Q FX/LD 2 Issue Q FP Issue Q FP Issue Q BR E xec Unit CR Exec Unit FX 1 Exec Unit LD 1 Exec Unit LD 2 Exec Unit FX 2 Exec Unit FP1 Exec Unit FP2 Exec Unit StQ D -cache
IBM Power 5 2 commits (architected register sets) 2 fetch (PC), 2 decodes
SMT ในทางปฏ บ ต อย างมากเพ ยงแค 2 threads ถ าจะให มากกว าน เช น 4 จะม ป ญหาคอขวดเก ดก บทร พยากรท ใช ร วมก น Cache Bandwidth ของหน วยความจ า Physical register ต วอย าง SMTCPU ท ออกส ท องตลาด Pentium-4 Hyperthreading(2002) จากน น Intel ท ง hyperthreading ไปนานมากจนกระท งย คสถาป ตยกรรม Nehalem ราว ป 2008 IBM Power 5 (2004) SMTCPU ท เป นโครงการแต ไม ได ท าออกมา Alpha 21464 (EV8)
เกณฑ ในการ schedule แต ละ thread ใน SMT เล อกค าส งจาก thread ท ม ค าส งอย ใน SMTpipe น อยท ส ด (ICOUNT policy) ค ณสมบ ต ของ ICOUNT: 1. ไม ท าให ค าส งจาก thread หน ง อย ในinstruction queue มากไป 2. ให ความส าค ญก บ thread ท ปลดค าส งจาก queue ได เร ว 3. ท าให เก ดการผสมผสานอย าง ย ต ธรรม
สร ปล กษณะการท า multithreading
OOOPipeline
SMTPipeline