Multiprocessor

  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Multiprocessor as PDF for free.

More details

  • Words: 21,985
  • Pages: 124
Multiprocessor รายชือ่ 1. ชุมพร ถาวรโชติวงศ 2. เฉลิมวุฒิ ขุนจาศาล 3. ธํารงคเดช รักษวงศ 4. อุษณี เลีย้ งประยูร 5. นองนุช ภิลวรสกุลชัย 6. สุคนธ ตัง้ โชคทรงชัย 7. คมสัน ธีระวณิชตระกูล 8. อุทยั วรรณ แลมศักดิ์ 9. ปญญาผล วรรณราช

41510014 41510016 41510021 41510023 41510026 41510042 41510058 41510064 41510079

The turning away from the conventional organization came in the middle 1960s, when the law of diminishing return began to take effect in the effort to increase the operational speed of a computer. …Electronic circuits are ultimately limited in their speed of operation by the speed of light… and many of the circuites were already operation in the nanosecond rage. Bouknight et al., The Illiac IV System [1972] …sequential computer are approaching a fundamental physical limit on their potential computational power. Such a limit is the speed of light… A.L. DeCegama, The technology of Parrallel Processing, Volume I (1980) …today’s machines… are nearing an impasse as technologies approach the speed of light. Even if the components of a sequential processor could be made to work this fast, the best that could be expected is no more than a few million instruction per second. Mitchell, The Transputer: The Time Is Now [1989]

Introductions ดังคํากลาวตั้งแตตนที่เปนภาษาอังกฤษนั้น ไดกลาวถึงขอดีใน สถาปตยกรรม Uniprocessor ไดใกลถงึ จุดจบทีไ่ ดมกี ารยืดเยือ่ มากหลายครัง้ สําหรับคําที่จะมาตอบโต ขอกลาวหาขางตนนัน้ เราไดเฝาสังเกตมาในชวง ป 1985 ถึงป 1995 ความสามารถของ Uniprocessor ไดพัฒนาขึ้นมาจาก Microprocessor ทีมคี วามสามารถสูงสุดในสมัยทีย่ งั เปน คอมพิวเตอร แบบทรานสิเตอร ในชวงระหวางปลายศตวรรษที่ 1950 และชวงตน ศตวรรษที่ 1960. บนพื้นฐานเหลานี้ผูเขียนไดเชื่อวา Parallel Machines จะสามารถ ทํางานไดมากมายในอนาคต ตามความเห็นนีไ้ ดถกู แบงออกเปน 3 ขอใหญ คือ 1.) ตัง้ แต Microprocessor ยังคงเปนสวนสําคัญของ Uniprocessor ทางตรรกะในการเพิม่ ประสิทธิ ภาพ Processor ตัวเดียวโดยการเพิม่ จุดเชือ่ มตอใหสามารถใช Microprocessors หลาย ๆ ตัวได มันเปนวิธีการที่จะประหวัดมากกวาที่จะพัฒนา Processor ตัวใหมทด่ี กี วา 2.) อนาคตไมชดั เจนหรือไมในทางสถาปตยกรรม ไดกา วไปอยางชา ๆ ในการเปลีย่ นปลง โดยมี แรงสนับสนุนใหมกี ารพัฒนาอยางรวดเร็วในทางดานประสิทธิภาพโดยเริม่ จาก ป 1985 เรือ่ ยมา 3.) การดําเนินการพัฒนาโปรแกรมเปนไปอยางชา ๆ ไปบนเสนทางที่ ลําบากทีแ่ พรออกไปทัว่ ในการใช Parallel Machines กลาวคือ โปรแกรม (Software) ไม มีใครคอยพัฒนาโปรแกรมของตัวเองใหใช Parallel Machines มากนัก. ผูเขียน(หนังสือ) ไดเชือ่ วาการพัฒนาทีร่ วดเร็วในทางดานประสิทธิภาพจะดําเนิน การตอไปอยางนอยสุดก็ถงึ ป 2000 (Millennium) อยางไรก็ตามในการเปลีย่ นแปลงไป อยางชา ๆ อาจจะนําใหอยูต อ ไปไดอกี ยาวนาน ถึงแมวา จะยากทีจ่ ะคาดการณ ถาการ พัฒนาเปลีย่ นแปลงเปนไปอยางชา ๆ ในการเขียนโปรแกรมใช Uniprocesors ในการ พัฒนารูปแบบของสถาปตยกรรมของ Multiprocessor อาจจะเปนการดีทจ่ี ะเพิม่ ความสน ใจใหมากยิง่ ขึน้ เรามีปญ  หาถึง 2 อยาง อยางแรกคือ การออกแบบ Multiprocessor เปนงานทีใ่ หญ และมีสว นทีแ่ ตกตางกันออกไป และ มีสว นทีแ่ ตกตางกันนีม้ ากและบางสวนยังเพิง่ เริม่ กับความคิดที่กําลังชวยกันพัฒนาและมีบางสวนที่ลมแหลวไปมากกวาจะประสบความ สําเร็จ

A Taxonomy of Parallel Architectures ความคิดที่เริ่มใช Processors หลาย ๆ ตัวมารวมกัน เพื่อพัฒนาประสิทธิภาพและ ความสามารถในอนาคตของคอมพิวเตอร เมือ่ 30 ปทแ่ี ลว Flynn ไดเสนอความคิดในตัว อยางรูปแบบของคอมพิวเตอรทแ่ี บงแยกออกเปนประเท ซึง่ มีประโยชนในปจจุบนั นี้ เขา ไดมองถึงความคลายคลึงกันของชุดคําสั่ง และทางเดินของขอมูลที่จําเปนตองใชชุดคํา สั่งในสวนประกอบของเครื่องไดแบงแยกเปน 4 ประเภทดังนี้ 1. Single instruction stream, single data stream (SISD) คือ Uniprocessor. 2. Single instruction stream, multiple data streams (SIMD) ชุดคําสัง่ ทีเ่ หมือน กันจะถูกดําเนินการโดย Processors หลาย ๆ ตัว ที่ใช Bus ตางกัน Processor แตละตัวจะมีขอมูลของตัวเองแตจะมี Instruction memory และ Control Process ทีร่ บั และสงขอมูลตัวเดียว 3. Multiple instruction streams, single data streams (MISD) ไมคอ ยนิยมกัน มากนักในปจจุบนั แตอาจจะนิยมกันในอนาคตก็ได 4. Multiple instruction streams, multiple data streams(MIMD) Processor แต ละตัวจะมี Instruction และ Data เปนของตัวเองแตบางครัง้ ก็จะมีการสงถึง กันไดบาง มันเปนรูปแบบทีไ่ มคอ ยจะสวยงาม แตเครือ่ งบางเครือ่ งก็มกี ารนํามาผสมกัน เพื่อ ใหเกิดประโยชนในการสรางโครงสราง ในชวงตน ๆ ของ Multiprocessor รูปแบบของ SIMD ไดมีการนํามาใชในชวง ทศวรรษที่ 1980 แตในชวงหลายปที่ผานมานี้ MIMD ไดมีการนํามาใชเพื่อสราง Multiprocessor กันมากขึน้ องคประกอบหลักทีไ่ ดนาํ MIMD มาใชมี 2 ขอดังนี้ 1. MIMD มีความยืดหยุน ทัง้ ในดาน Hardware และ Software. MIMD สามารถ ทีจ่ ะนํามาใชกับเครื่อง PC ทัว่ ไปไดในการทํางาน Application เดียวโดยมี ประสิทธิภาพสูง และยังใชกบั เครือ่ งทีใ่ ชงานหลาย ๆ โปรแกรมพรอม ๆ กัน

2. MIMD สามารถทีจ่ ะสรางเปน Microprocessor ตัวเดียวทีท่ ง่ั ประหยัดและมี ประสิทธิภาพสูงได ในปจจุบนั นี้ Microprocessor ไดใชหลักการนีเ้ ปนตัว สรางทีจ่ ะพบเห็นไดงา ยก็คอื Workstation หรือ Single-Processor Severs. MIMD ที่เปนอยูในขณะนี้ไดแบงออกเปน 2 ประเภท ขึ้นอยูกับ จํานวน Processor ที่ใชโดยสามารถจะระบุบ Memory Organization และ รูปแบบของ Interconnect ได โดยเราไดอา งถึงโดย Memory Organization ของมันเอง ประเภทแรก เราจะเรียกวา Centralized shared-memory architectures มี Processors อยางนอย 12 ตัวทศ กลางทศวรรษที่ 1990 สําหรับ Multiprocessor ทีมี จํานวน Processor นอยมันสามารถใช Processor ใช Centralized Memory และ Interconnect รวมกันโดย Bus ตัวเดียวกัน ทีม่ ี Caches ทีม่ จี านวนมาก ํ Bus และ Single

Memory สามารถทีจ่ ะสละ ความตองการ Memory ของ Processor ทีม่ นี อ ยได เพราะวามี Main Memory เดียว ทีม่ กี ารเขาออกเปนเวลา จากทุก ๆ Processor หรืออาจจะเรียกวา UMAs for uniform memory access. ดังรูปตัวอยางขางรางนี้

ประเภทที่สอง คือ ในประเภทนีจ้ ะมี Memory สวนตัวเพราะมีจํานวน Processor มากเพือ่ ใหไมเปนการเสียเวลาในการนําขอมูลจากสวนกลางเพราะ Processor มากถาจํา เปนตอง ขอใช Memory สวนกลางจะทําใหเกิดความลาชาของการสงขอมูลดวยดังรูปตัว อยางขางลางนี้

การแบง Memory ออกเปน Node มีจดุ ประสงคหลักอยู 2 อันคือ 1). ถาการสง ผานขอมูลอยูแค Local Memory ก็จะลดความถีใ่ นการสงขอมูลไปและรับจาก Memory. 2). ชวยลดเวลาในการเขาถึงขอมูลในหนวยความจําแบบ Local Memory ขอดี 2 ขอที่ได พูดมานี้จะทําให Processor ทีม่ ขี นาดเล็ก มีความเร็วสูง และตองการใหมีความถี่ในการ ส งขอมูลไปยัง Memory และ การเขาถึงขอมูลในหนวยความจํ าชา ขอเสียของ สถาปตยกรรมแบบแบง Memory คือจะมีการสงขอมูล จาก Processor ถึง Processor มี ความยุง ยากและมีการเสียเวลาในการติดตอกันเพราะ Processor ไมจาเป ํ นตองมีการแยง Centralized Memory กัน I/O ก็ถกู แบงเหมือนกับ Memory ทีแ่ ตละ Node ก็จะมี Memory และ I/O อยูด ว ย ใน Multiprocessor และ ก็จะมี Processor อยูดวยโดยติดตอซึ่งกันและกันดวย

เทคโนโลยีทแ่ี ตกตางกัน ขณะที่ Cluster (ระบบนี)้ ของ Multiprocessor ใน Node ทีม่ ที ง้ั Memory และ การติดตอกันแบบ Network อาจจะมีประโยชนในแงของราคาทีป่ ระหยัด Models for Communication and Memory Architecture Multiprocessor ทีม่ ขี นานใหญกต็ อ งใช Memory หลายตัวรวมกันโดยไดแบงตาม Processor ทั้งหลาย มีรูปแบบของสถาปตยกรรมในการติดตอสงขอมูลกันระหวาง Processor 2 วิธี ในทางปฏิบตั ขิ องการแยก Memory สามารถทําไดโดย Processor จอง เนือ้ ทีไ่ วสําหรับเก็บขอมูลใน Local Memory ทีใ่ ดก็ได ไดเรียกเครือ่ งนีว้ า Distributed shared-memory (DSM) หรือ Scalable shared-memory architecture ในความหมายของ การ แบงบัน Memory ก็คือที่วางไดมีการแบงกัน นั้นก็คือ ที่อยูทางกายภาพของ Processor สองตัวอางอิงที่เดียวกัน ในการแบง Memory นัน้ ไมไดหมายความวามี Centralized Memory อันเดียว ในการเปรียบเทียบกันของ Centralized Memory ของแต ละเครือ่ ง จะรูจ กั ในชือ่ วา UMAs (uniform memory access) และเครื่อง DSM จะรูจ กั ใน ชื่อวา NUMAs (non-uniform memory access) โดยเวลาในการเขาถึงขอมูลทัง้ หมดขึน้ อยูกบั ทีอ่ ยูข องขอมูลใน Memory ทางเลือกอีกทางหนึง่ ก็คอื ทีอ่ ยูท ว่ี า งสามารถทีจ่ ะประกอบขึน้ จากทีว่ า งของสวน ตัวหลาย ๆ ที่ ทีซ่ ง่ึ ไมปะติปะตอกันและไมเปนทีข่ อง Processor ทีอ่ ยูไ กล ในความจริง เครือ่ งทีม่ ี Processor ที่มีท่ีอยูท างกายภาพทีเ่ ดียวกันหมายถึงทีอ่ ยูใ น Memory ทีต่ า งกัน Processor แตละตัวจะมี Memory ของตัวเองโดยแยกจาก คอมพิวเตอร หรือเรียกวา Multicomputer เครื่องเหลานี้สามารถจะแยกกันเปนคอมพิวเตอรคนละตัวกันไดโดยมี การเชือ่ มตอกันในระบบเครือ่ งขายภายใน ดวยการรวมกันของที่วาง นี้ก็คือการตั้งการติดตอกันของเครื่องจักร สําหรับ เครื่องที่มีการแบงที่วาง โดยทีว่ า งนัน้ สามรถทีจ่ ะใชตดิ ตอกันของขอมูลหมายความวา สามารถที่จะทําการเก็บหรือดึงขอมลู ขึน้ มาได สําหรับเครือ่ งทีม่ ที ว่ี า งทีซ่ อ นกันมากมาย ขอมูลสามารถติดตอกันไดโดยตรงผานเปนคําพูดระหวาง Processor ดังนัน้ เครือ่ งแบบนี้ จะเรียกวา Message passing machines.

ในการพูดคุยกันผานเครื่อง การติดตอจะถูกสงไปยังรูปแบบของคําพูดทีต่ อ งการ การกระทําหรือรับขอมูลดวยการติดตอแบบเครือขายอยางงาย ๆ ดังตัวอยางตอไปนี้ เมือ่ Processor ตัวหนึง่ ตองการทีจ่ ะเขาถึงขอมูลใน Memory ทีอ่ ยูไ กล สามารถทีจ่ ะสงขอ ความใหขอมูลนั้นทําการเก็บหรืออานขึน้ มาได ในสถานการณ นี้ ขอความสามารถที่จะ สั่งได หรือเรียกวา remote procedure call (RPC). เมือ่ จุดมุง หมายของการดําเนินการได รับขอความ เปนการทํางานรับ เก็บหรือ แสดงผล Processor ทีท่ ําหนาที่ควบคุม Memory นั้นก็จะทําตามขอความทันที และจะสงผลรับกลับมาเปนขอความเหมือนกัน ลักษณะ การสงขอมูลที่ดําเนินการสงขอความขอรองและรอจนกระทั่งไดรับคําตอบกลับมาเรียก วา Synchronous ระบบของ Software ตองถูกสรางมาเพือ่ จะสงและรับขอความ รวมถึง การสงขอมูลที่ซับซอน หรือการสงคากลับมาทีต่ อ งแสดงใหชดั เจน การติดตอสามารถเกิดขึ้นจากมุมมองของคนเขียนขอมูลมากกวาผูอานและสิ่งห ลานีส้ ามรถมีประสิทธิภาพมากเมือ่ Processor สรางขอมูลที่ Processor ตัวอืน่ ก็ตอ งการ ดวยในสถานการณนี้ขอมูลสามารถที่จะสงไดโดยตรงถึงผูที่ตองการโดยไมตองมีการ รองขอมากอน มันบอยครัง้ ทีส่ ามารถทีจ่ ะทําไดดังนี้ขอความมักสงมาตามคําขอของผูรับ มากกวาในเวลาที่ตองการ บอยครั้งที่ผูรับจะคอยรวบรวมถามันพยายามที่จะรับขอมูล กอนที่จะไดมีการสงมา ในอีกสถานการณหนึง่ ผูอ า นอาจจะตรวจสอบวาขอความทีค่ อย กอนที่จะพยายามเก็บขอมูลทีไ่ ดรบั ถึงแมวา ผูส ง ก็จะตองเตรียมการรวมรวมถาผูร บั ยังไม ไดรับขอความ ขอความจะสงอยางสะดวก ในเครือ่ งหลายเครือ่ งทีต่ อ งการมากมายอยาง ยุตธิ รรม Performance Metrics for Communication Mechanisms 3 วิธใี นการวัดความสามารถทีส่ าคั ํ ญในการติดตอของเครือ่ ง 1. Communication bandwidth อัตราการสงสัญญาณการติดตอทีเ่ หมาะสมขึน้ อยูก บั Processor, Memory และ อัตราการสงสัญญาณติดตอซึ่งกันและกัน มากกวากฎเกณฑในการติดตอของเครือ่ ง อัตราการสงสัญญาณถูกแบงออกเปน 2 สวนเทา ๆ กัน กําหนดโดยการติดตอซึง่ กัน

และกันของเครือขาย โดยสัญญาณเขา และ ออกของ Node เดียว มันเปนสวนสําคัญ ของการแบงอัตราการสงสัญญาณ ทีม่ ผี ลทัง้ คูใ นการออกแบบสถาปตยกรรม ภายใน ของ Node และโดยการติดตอกันของเครือ่ ง เมือ่ มีการติดตอเกิดขึน้ ภายใน Node ทีม่ ี ความเกีย่ วกันในการติดตอไดพยายามทีจ่ ะเปนเจาของ แตจะถูกขัดขวางโดยสัญญาณ ติดตอเขาและออก มันจะถูกตั้งใหมีจํานวนจํากัดที่แนนอนในอัตราสัญญาณการติด ตอ ขอจํากัดนีจ้ ะชากวาที่ Network หรือ Memory จะสามารถทําได ระหวางการ ครอบครองอาจจะมีองคประกอบทีไ่ ดรบั ความเสียหายสําหรับการติดตอทัง้ หมด ไม เวนแมแตการรองขอสัญญาณเขา และออก และผลกระทบของความเสียหายในอัตรา การสงสัญญาณทั้งหมดขึ้นอยูกับขนาดของขอความ 2. Communication latency สูตรการคํานวณ Sender overhead + Time of flight + Transport latency + Receiver overhead Time of flight และ Transport latency ไดถกู วัดโดยการติดตอกันระหวางระบบเครือ ขาย คาเสียเวลาของ Software และ Hardware ในการสงและรับขอความใหญวัดได โดยการติดตอของเครือ่ ง และ เครือ่ งมือ การเขาถึงขอมูล (Latency) มีผลตอ ประ สิทธิภาพและความยากงายในการโปรแกรมใหใชกับ Multiprocessor ถึงแมวา Latency จะไมไดแสดงออกมาอยางชัดเจน มันจะมีผลโดยตรงกับประสิทธิภาพแต จะทําให Processor เกิดความยุง ยาก หรือไมกท็ าให ํ เสียเวลา Processor คาเสียเวลา และการครอบครอง มันเปนสิง่ ทีค่ อ นขางจะใกลเคียงกัน ตัง้ แตคา เสียเวลาในรูปแบบ ตาง ๆ ไดถูกพัวพันกับ Nodeและคาความเสียหายจากการครอบครอง อันทีซ่ ง่ึ เปน การจํากัดความถีข่ องสัญญาณ กุญแจสําคัญของการติดตอกับเครือ่ ง อาจมีผลโดยตรง กับคาเสียเวลาและการครอบครอง 3. Communication latency hiding ทําอยางไรถึงจะสามารถซอน การเขาถึงขอมูลของเครื่องโดยการซอนสัญญาณ การติดตอดวยการคํานวณหรือดวยการติดตอแบบอืน่ ถึงแมวาการวันนี้จะไมคอยงาย เหมือนกับการวัด ทั้ง 2 วิธีทไ่ี ดกลาวมา มันเปนลักษณะพิเศษทีส่ ําคัญที่สามารถ แสดงถึงคุณภาพไดโดยการวัด Running Time ของเครือ่ ง ดวยการใชการติดตอเขาถึง ขอมูลชุดเดียวกัน แตแตกตางกันในการสนับสนุนการซอนการเขาถึงขอมูล ขณะที่

Hiding Latency มันเปนความคิดทีด่ แี ตมนั เปนการเพิม่ ความจุของ Software และ ทายทีส่ ดุ คือคนเขียนโปรแกรม การวัดประสิทธิภาพนี้มีผลโดยลักษณะพิเศษของการติตอที่ตองการการนํ าไปใช ขนานของขอมูลในการติดตอก็ไดมกี ารเห็นไดชดั ตัง่ แตมนั เกิดผลในทางตรงของการเขา ถึงขอมูลและอัตราความถี่ของสัญญาณเชนเดียวกับผลของวิธีที่แตกตางไปในการซอน การเขาถึงขอมูล ในทํานองเดียวกัน ในการติดตอโดยทัว่ ไปก็มผี ลตอคาการการกําหนด และการปองกันและ คาเสียเวลาของการขอการติดตอ ในทางปกติ เครื่องที่มีองค ประกอบที่ดีการขอการติดตอกับขอมูลดวยขนานเล็กก็เหมือนกับขนานใหญ และรูป แบบที่ไมปกติก็จะเหมือนกับรูปแบบที่ปกติ ทัง้ หมดนีม้ คี วามยืดหยุน และประสิทธิภาพ สําหรับลักษณะของงานทีก่ วางขวางออกไป Advantages of Different Communication Mechanisms ขอดีของการติดตอกับเครือ่ งเหลานี้ มีไวสาหรั ํ บการติดตอรวมใชหนวยความจํามี ดังตอไปนี้ ! เครือ่ งจะเขาใจดวยกันไดในการใช Multiprocessor สวนกลาง ในการติดตอ การแบงหนวยความจํา ! การโปรแกรมก็จะทําไดงา ยเมือ่ รูปแบบการติดตอระหวาง Processor มีความ เหมือนกันในระหวางการทํา Execution ! คาเสียเวลาในการติดตอทีน่ อ ยลงและการใชอตั ราความถีข่ องสัญญาณทีด่ เี มือ่ การติดตอมีขนาดเล็ก นีเ้ ปนตามปกติของการติดตอและการใชการยายหนวย ความจํ าของเครื่องมือการปองกันใน Hardware ที่ดีกวาเขาไปถึงระบบ Operating System ! ความสามารถที่ใช Hardware-controlled Caching ในการลดความถีข่ องการ ติดตอระยะไกลโดยรองรับระบบ Caching สําหรับทุก ๆ ขอมูล ทีท่ ง้ั มีการ แบงและของตัวเอง ในการ Caching จะทําใหมีการลดคาการเขาถึงและชวง ชิงในการเขาถึงขอมูลทีแ่ บงกันได

ขอดีของการใชการสงขอความถึงกัน (Message-Passing) ! Hardware สามารถทําไดงาย โดยเฉพาะอยางยิง่ โดยการเปรียบเทียบกับการ การวัดโดยเครื่องมือในแบงขอมูล ทีร่ องรับการรวมกันของ Caching ของขอ มูลทีอ่ ยูไ กลได ! การติดตอไดแสดงออกมาเดนชัดบังคับใหผูเขียนโปรแกรม (Programmer) และ ตัว Compiler ใหเคารพในการติดตอ ในการทํางานนีต้ อ งทําใหผเู ขียน โปรแกรม (Programmer) และ ตัว Compilerเขียนอยางระมัดระวัง การออกแบบของรูปแบบการติดตอสามารถสรางบนรูปแบบของ Hardware ทีไ่ ม แนวา องรับบนเครือ่ งได การรับรองการสงผานขอความบนการแบง Memory มันเปน การงายมาก เพราะวา ขอความเปนปจจัยในการสิง่ ขอมูลจาก หนวยความจําหนึง่ ไปอีกที่ หนึ่ง มากสงขอความสามารถ เพิม่ โดยทําการลอกจากหนึง่ สวนจากทีว่ า งของ Address ไปอีกที่หนึ่ง สาเหตุของความยากจากจํานวนขอความทีม่ ากมายทีอ่ าจจะเกิดปญหาเสน ทางผิด และ การทีไ่ มมเี กณฑในจํานวนของ Memory ในระบบมันก็คอื การหันไปขาง หนาตามปกติเพือ่ จะรับขอมูลมาจาก Block มันก็คอื Cache Block ความยากเหลานี้ สามารถทีจ่ ะทําใหผิดพลาด ไดดว ยจุดขององคประกอบขนานเล็กใน Software หรือ ดวย การทีไ่ มมจี ดุ ประสงคของการใชจานวน ํ Hardware ขนาดเล็ก การรับรองประสิทธิภาพของการแบง Memory บน Hardware สําหรับการสงผาน ขอความมันเปนการยากมาก ปราศจากการรับรองทีแ่ นชดั ของ Hardware สําหรับการ แบง Memory การแบงหนวยความนําทั้งหมดมันอางถึงความตองการที่จะยุงเกี่ยวกับ Operating System ทีจ่ ะจัดการการแปลง Address และ การปองกัน Memory พรอมกับ การยาย Memory อางไปสูการสงขอความและรับ การเก็บขอมูลและแสดงขอมูล ปกติจะ ใชจานวนข ํ อมูลเล็ก ๆ ดังนัน้ การเสียคาการติดตอในระดับสูงใน Software จะมีการเขม งวดในการจํากัดขอบเขตของ Application สําหรับองคประกอบพืน้ ฐานของ Software ในการแบงขอมูลที่จะยอมรับได บนขอบเขตของการวิจยั คือการสํารวจเพือ่ จะใหรปู แบบ Software-base เปนทีย่ อมรับและ Software-base mechanism ใชไดสําหรับขัน้ ของการติด

ตอระดับสูง หนึง่ ในปญหาทีต่ รงทีส่ ดุ คือการใช Virtual Memory ของเครือ่ งในการแบง วัตถุประสงคในระดับเดียวกันเทคนิคนีเ้ รียกวา Shared virtual memory ในการแบงหนวยความจํา (Distributed-memory) ของเครือ่ ง รูปแบบของหนวย ความจําและการติดตอกับเครื่องจะรูกันในเครื่อง ตนแบบของการแบงหนวยความจํา เครือ่ งสรางดวยการสงผานขอความ ตัง้ แตมนั สิง่ ทีง่ า ยและ นักออกแบบหลายคน และ นักวิจยั หลายคนไมเชือ่ ในการแบง Address Space สามารถสรางดวยการแบงหนวยความ จํา เมื่อไมนานมานี้ การติดตอแบงหนวยความจํา ไดมกี ารรับรองในความจริงของรูป แบบของทุกเครือ่ ง ๆ สําหรับเมือ่ ราว ๆ กลางทศวรรษที่ 1990. Hardware ติดตอกับ เครือ่ งจะรับรองในเครือ่ งขนานใหญ (Massively Parallel Processor, or Mpps) โดยปกติ จะตองมี Processor มากกวา 100 ตัวขึ้นไป ก็ไมแน การแบงขอมูล การสงผานขอความ และ ลักษณะทีใ่ กลเคียงกันทัง้ หมด เหลานีค้ อื ตัวยืนยัน แมจะมีสญ ั ลักษณทส่ี ําคัญของ MPPs ดังนัน้ เครือ่ งเหลานีเ้ ปนสวนเล็ก ๆ ของความตองการ และอาจจะไมมีผลในทาง หลักของเครือ่ งดวยการผานของ Processor ตาง ๆ ถึงแมวาหนวยความจําสวนกลางของเครือ่ งใช Bus ในการติดตอซึง่ กันและกัน มันยังคงแบงกันในเงื่อนไขขนาดของความตองการ การแบง Shared-memory ของเครือ่ ง มันเปนตามสวนเพิม่ ธรรมดาของ Multiprocessor สวนกลางทีแ่ บงความตองการ Challenges of Parallel Processing อุปสรรคทีส่ ําคัญ 2 อยางทีอ่ ธิบายไดดว ยกฎของ Amdahl ในการสราง Parallel Processing Challenging. อยาง แรก ตองทําตามขอจํากัดของความสามารถของ Parallelism ในโปรแกรม และ อยางทีส่ อง เกิดจากความสัมพันธของคาการติดตอระดับ สูง ขอจํากัดในความสามรถของ Parallelism สรางความยากในผลของความเร็วทีส่ งู ใน Parallel Machine Amdahl’s Law is

1

Speedup = Franction Enchanced + (1 − Franction Enchanced ) Speedup Enchanced

ในการทาทายอนที่ 2 ที่เกี่ยวกัน การเขาถึงขอมูลขนาดใหญของการเขาถึง Parallel machine ในระยะไกล ในเครือ่ งทีย่ งั คงมีการติดตอของขอมูลระหวาง Processor อาจมีคาอยูระหวาง 50 clock cycles ถึง 10000 clock cycles ขึ้นอยูก บั ระบบการติดตอ ของตัวเครือ่ ง ชนิดของการติดตอซึง่ กันและกันในระบบ Network และ ขนาดของเครื่อง ดังในตารางขางลางนี้แสดง round-trip delays การเอากลับมาจากหนวยความจําทีอ่ ยูไ กล สําหรับ หลาย ๆ เครือ่ งที่ มีความแตกตางกันของ Parallel machines Machine SPARCCenter SGI Challenge Cray T3D Convex Exemplar Ksr-1 Cm-5 Intel Paragon IBM SP-2

Communication Interconnection Processor mechanism network count Shared memory Bus ≤ 20 Shared memory Bus ≤ 30 Shared memory 3D torus 32 – 2048 Shared memory Crossbar + ring 8 – 64 Shared memory Hierarchical ring 32 – 256 Message Passing Fat tree 32 –1024 Message Passing 2D mesh 32 – 2048 Message Passing Multistage switch 2 – 512

Typical remote memory access time 1 µs 1 µs 1 µs 2 µs 2 – 6 µs 10 µs 10 – 30 µs 30 – 100 µs

Characteristics of Application Domains ในบทกอนหนานีเ้ ราพิจารณาเกีย่ วกับประสิทธิภาพและลักษณะพิเศษของ application กับความเขาใจลึกซึง้ ของผลรวมขนาดเล็กในโครงสรางของ Application เพื่อชวยในความเขาใจเกีย่ วกับเรือ่ งประสิทธิภาพของ Uniprocessor เชน cache และ pipeline ความรูท ว่ั ๆไปของapplicationจะพบไดบอ ย ๆ ในตัวประมวลผลทีค่ ลายคลึงกัน อยางไรก็ตามเกิดการเพิม่ ขึน้ ของประสิทธิภาพ เชนการ load balance ซึง่ เกิดขึน้ ในเวลา เดียวกันและความไวในการเขาถึงหนวยความจําซึง่ บอยครัง้ มันขึน้ อยูก บั ภาษาระดับสูง

ของ application ลักษณะนีร้ วมถึงการทีข่ อ มูลกระจายไดอยางไร โครงสรางของอัลกอริ ทึ่มทีค่ ลายคลึงกัน ทีว่ า งและเวลาในการเขาถึงขอมูล เพราะฉะนั้นในจุดนี้ใชเวลาในการ ดูความแตกตางของการโหลดซึง่ เราจะใชสาหรั ํ บการวิเคราะประสิทธิภาพในบทนี้ ในสวนนี้จะพูดถึงการสรุปรายละเอียดเกี่ยวกับความแตกตางของขอบเขตของ 2 การทํางานของmultiprocessor ในแตละโปรแกรมทีค่ ลายคลึงกันและmultiprocessorจะ รวมถึงการทํางานของระบบปฏิบตั กิ าร ในหัวขออื่น ๆกลุม ของ workload คือ database , fileserver , และในดานระบบการทํางาน โครงสรางทีเ่ หมือนจริงของ workload และ ความละเอียดแมนยําในจังหวะของmultiprocessorรวมถึงการทํางานของทุก ๆ ระบบ ปฏิบัติการ เปนความซับซอนอยางทีส่ ดุ พวกเราสามารถทําอะไรไดกับประสิทธิภาพ ของเครือ่ งมือทําแบบ ในอนาคตรูปแบบการพิมพของหนังสือจะประกอบดวยลักษณะ พิเศษของ workload ที่มีบางระบบการทํางานทีค่ ลาคลึงกันและระบบหนวยความจําของ ฐานขอมูลและการดําเนินการของ workloadซึง่ จะคลายกับการทํางานของ workload ของ multiprogramขนาดใหญซง่ึ รวมถึงการทํางานของระบบปฏิบตั กิ าร สําหรับในปจจุบนั พวกเรามีความพอใจกับการพิสูจนเชน multiprogramming workload Parallel Application Application workload ที่คลายคลึงกันประกอบขึน้ ดวย 2 application และ 2การ ทํางานหลัก kernels จะแยก FFT ( fast fourier transformation ) และ LU ออกเปนสวน ๆ ซึง่ สามารถเลือกไดเพราะวาโดยทัว่ ๆไปมันจะแสดงการใชเทคนิคใน applicationและ รูปแบของความมีประสิทธิภาพของลักษณะพิเศษของ application ทีค่ ลายคลึงกันจํานวน มากในการเพิ่มขึ้น kernelsมีcodeขนาดเล็กซึง่ พวกเราสามารถเขาใจถึงสถาปตยกรรมทีม่ ี ลักษณะพิเศษ 2 application ทีเ่ ราจะใชในบทนีค้ อื Bearn และ Ocean ซึง่ ทัง้ 2 ตัวนีม้ ี ความสําคัญแตเปนสิง่ ทีย่ ากมากของการคํานวณทีค่ ลายคลึงกัน เราจะอธิบายสรุปแตละ application และ kernel และลักษณะพิเศษขั้นพื้นฐานของคุณสมบัติของความคลายคลึง กันและการติดตอ เราสามารถอธิบายไดวา ปญหาถูกแบงออกเปนสวน ๆ ไดอยางไร สําหรับการกระจายการใชหนวยความจํารวมกันของเครือ่ งจักรแนนอนขอมูลจะถูกแบง แยกซึ่งเราจะอธิบายไดวา มันเปนสิง่ ทีไ่ มจําเปนสําหรับเครือ่ งจักรซึง่ มันมีการรวมของ หนวยความจําแตละตัวในระบบ เดียว

THE FFT KERNEL Fast Fourier Tranformation( FFT ) คือ keykernel ใน application ซึ่งจะใชวิธี เฉพาะซึง่ เกิดขึน้ ในระยะขอบเขตการทํางานเดียวถึง fluid flow ซึง่ รูปแบบเฉพาะของ FFT application พวกเราไดเขียนในรูปของ Multi algorithmทีค่ ลายคลึงกันสําหรับคาทีค่ ลายคลึงกันของ FFT ซึง่ มันจะมีลาดั ํ บเวลา ในการทํางานสําหรับขอมูล n ตัวคือ n log n อัลกอริทม่ึ ทีใ่ ช high radix ( √n ) ซึ่ง นอยมากสําหรับการติดตอสือ่ สาร เครือ่ งวัดทีแ่ สดงในบทนีจ้ ะเก็บรวบรวมสําหรับหนึง่ ลานคําสัง่ ทีใ่ ชเปนอินพุท มีโครงสรางขอมูลขัน้ ตน3โครงสรางคือ Iinput output arrays ของขอมูลทีเ่ ริม่ ตนเปลีย่ นแปลงและคาของเมทริกเอกภาพซึง่ กอนทีจ่ ะคํานวณและใชในการอานเทานั้น ซึ่ง array ทัง้ หมดจะถูกรวมเปน เมทริกสีเ่ หลีย่ ม 6 ขัน้ ตอนของอัลกอริทม่ึ ประกอบดวยดังนี้ 1. TRANSPOSE DATA MATRIX 2. PERFORM ID FTT ON EACH ROW OF DATA MATRIX 3. MULTIPLY THE ROOT OF UNITY MATRIX BY THE DATA MATRIX AND WRITE THE RESULT IN THE DATA MATRIX 4. TRANSPOSE DATA MATRIX 5. PERFORM ID FFT ON EACH ROW OF DATA MSTRIX 6. TRANSPOSE DATA MATRIX คาขอขอมูลและคารากของเมทริกเอกภาพจะอยูใ นระบบปฏิบตั กิ ารในระหวาง การทํางานซึง่ อยูต ดิ กันเปนแถวดังนัน้ จึงลดกระบวนการทํางานแตละขึ้นตอนลงใน หนวยความจําของตัวมันเอง ในแถวแรกขแงรากของเมทริกเอกภพถูกรบกวนอยางหนัก โดยกระบวนการทํางานทัง้ หมดและบอยครัง้ ทีถ่ กู จําลองขึน้ อยางเชนทีเ่ ราทําระหวางขั้น ตอนแรกของอัลกอริทม่ึ ทีแ่ สดงไวซง่ึ เราจะติดตอสือ่ สารกันในขัน้ ตอนของการสับ เปลีย่ นเทานัน้ การติดตอสือ่ สารจะใชจํานวนขอมูลขนาดใหญ กําหนดคอลัมแตละคอ ลัมในแถวเขาสูp rocessorโดยทําเปนgroupในblockซึ่งมันจะถูกสับเปลีย่ นและแทนทีใ่ น ที่ต้ังของเมทริกทีค่ ณ ุ เตรียมไว ทุกๆตัวprocessorจะสลับblockของตัวเองและสงอีกblock หนึง่ ไปใหตวั ประมวลผลอยางไรก็ตามจะไมมกี ารนําคําแตละคํากลับมาใชในการสับ

เปลีย่ นกับcacheขนาดใหญ block จะถูกสงไปยังอีกblockหนึง่ การสับเปลีย่ นนีม้ ขี อ ดีคอื สามารถหาทีว่ า งภายในblockตนกําเนิดได THE LU KERNEL LU คือตัวประกอบในความหนาแนนของเมทริกและเปนตัวแทนของความหนา แนนในแนวเสนตรงเชนQR FACTORIZATION , CHOLESKY FACTORIZATION AND EIGENVALUE METHOD สําหรับเมทริกขนาด n × n มีเวลาในการทํางานคือ n 3 และทีค่ ลายคลึงกันคือ n 2ความหนาแนนของ LU – FACTORIZATIONมีประสิทธิ ภาพคือคือการblocking algorithm ซึง่ จะใชเทคนิคในบทที่ 5 มันจะไมไปทําใหcache มี ประสิทธิภาพสูงและการติดตอสื่อสารที่ชาหลังจากการblocking algorithm การคํานวณ หลักคือ การคูรเมทริกซึง่ เกิดขึน้ ขางในสุด เราสามารถเลือกขนาดของblockใหมีขนาด ใหญพอทีจ่ ะทําใหอัตราการผิดพลาดในcacheลดลงและเล็กเพียงพอทีจ่ ะใชเวลาในการ ทําใหกลับสูส ภาพเดิม ในสวนของการคํานวณทีค่ ลายคลึงกัน ความสัมพันธของblockที่ มีขนาดเล็ก ( 8 × 8 หรือ 16 × 16 ) จะนําไปสูความไมมาตราฐาน มีรายละเอียดสอง ขอทีส่ าคั ํ ญสําหรับการติดตอภายในprocessor 1. Block ของเมทริกจะถูกกําหนดให processor ใช 2 มิติของ n / 3 × n / 3 ( block มีขนาด B × B ) เมทริกของblockจะถูก จําลองเนือ้ ทีโ่ ดยมีขนาด p × p เมทริกขนาดใหญของblockในรูปของ cookie – cutter จน กระทัง่ blockทั้งหมดถูกจองใหกบั processor 2. การคูณเมทริกถูกดําเนินการโดยprocessorของblockเปาหมาย สําหรับในบทนีอ้ นิ พุท คือเมทริกขนาด 512×512 และใชblockขนาด 16×16 โดยทัว่ ๆไป code ของblock ของ LU FACTORIZATION ของเมทริกขนาด 2 มิตซิ ง่ึ ใชทว่ี า งรวมกันในarray 2 มิติ ในการ แทนมิติเพราะวาblockถูกจองเนือ้ ทีโ่ ดยแบงออกเปนสวน ๆและblockไมสามารถอยูต ดิ กันในทีว่ า งในarray 2 มิติ มันเปนการยากมากทีจ่ ะจองหนวยความจําในblockของ processor ของมันเอง การแกปญหาสามารถรับประกันไดวา blockจะถูกกําหนดให processorซึ่งจะจองเนีอ้ ทีต่ ดิ กันโดยใชarray 4 มิติ ( 1, 2 มิติ เฉพาะหมายเลขใน 2มิติของ block )

THE BARNES APPLICATION BARNES คือ เครือ่ งทีส่ นับสนุน BARNES-HUT n-body อัลกอริทม่ึ ทีจ่ ะใชแก ปญญาทีเ่ กิดขึน้ นี้ n-body algorithm จะมีผลกระทบระหวางจํานวน bodyขนาดใหญซง่ึ มันมีแรงกระทํา ระหวางกัน ในตัวอยางนี้ bodiesจะแทนการรวมกลุม ของ starและที่สาคั ํ ญเวลาในการ คํานวณจะถูกลดลงสูร ปู แบบทีส่ มบูรณทส่ี ดุ ของแตละการกระทําระหวาง bodiesซึง่ มี การ พัฒนาเทากับ n 2 , n bodies อัลกอริทม่ึ นําเอาขอดีของขอเท็จจริงทีบ่ งั คับใหหยุดนิง่ มานานแลว( ตัวอยางทีส่ าคั ํ ญของการจากไปของ 1 / d2 ซึ่ง d เปนระยะระหวาง bodies ทัง้ 2 ) The Barnes-Hut algorithm นําเขาสูข อ ดีของคุณสมบัตนิ โ้ี ดยการรวมกลุม ของ bodyซึ่ง มันหางไกลจากbodyตัวอืน่ ๆ ซึง่ เปนจุดศูนยกลางของนําหนั ้ กของกลุม ถาbodyมีความ ไกลเพียงพอจากทุก ๆbodyในกลุม ซึง่ จะทําใหเกิดความผิดพลาดเพียงเล็กนอย กลุม ของ โครงสรางในรูปแบบของ hierarchical ซึ่งสามารถแทนไดโดยใช tree ที่algorithmนี้ใชเวลาในการ run = n log n กับสวนทีค่ ลายคลึงกันของ n The Barnes-Hut algorithm ใช octree ( แตละnodeเพิ่มขึ้นถึง 8 children ) แสดง แทน 8 เหลียมในสวนของทีว่ า ง ซึง่ แตละnodeจะแทนการรวมกลุม ของbody ใน subtree ของrootที่nodeนัน้ ๆซึง่ พวกเราจะเรียกมันวา cell เพราะวาความหนาแนนของที่วางและ การใชแตละ body แทน deptของtreeทีแ่ ตกตางกัน treeจะถูกกัน้ ไวตอ 1 body ในการ คํานวณแรงทีก่ ระทําตอbody อัลกอริทม่ึ ในการคํานวณแรงสําหรับbodyจะเริม่ ที่ root ของtree สําหรับทุก ๆ โหนดในtree อัลกอริทม่ึ จะสิน้ สุดถาศูนยกลางของนําหนั ้ กของ ตัวแทนcellโดยโหนดทีเ่ ปนรากของsubtreeมันอยูไ กลอยางเพียงพอจากbody ดังนัน้ ถา โหนดภายใต subtreeมีจํานวนเกือบทัง้ หมดโดยจุดๆเดียวทีน่ าหนั ้ํ กของ cell และแรงจาก ศูนยกลางของนําหนั ้ กทีจ่ ะพยายามทําการคํานวณทีบ่ น bodyซึง่ ศูนยกลางของนําหนั ้ กไม อยูไ กลเพียงพอ cellจะตองเปดและแตละsubtreeจะตองถูกเขาถึง ระยะทางระหวางbody และcellมันจะทนตอความผิดพลาดซึ่งcellจะตองถูกเปด การคํานวณในชวงนี้มีอิทธิพล ตอ execution time ในที่นี้จะใชbodyขนาด 16 K

เงื่อนไขของผลกระทบทีค่ ลายคลึงกันของประสิทธิภาพบน Barnes – Hut มันทา ทายเพราะวามันจะกระจายไปทัว่ bodyในแบบทีแ่ ตกตางกันหมดและมีการเปลีย่ นแปลง ไปตลอกเวลาซึง่ มันจะทําการแบงการทํางานทั้งหมดของprocessor ซึง่ พวกเราสามารถ ทําไดโดยใช 2 คุณสมบัติคือ ระบบทีพ่ ฒ ั นาไปอยางชา ๆ เพราะวาแรงในการดึงดูดลดลง อยางรวดเร็วซึง่ มีความนาจะเปนสูง ในแตละ cellตองการเกีย่ วกับcellจํานวนเล็กนอยอืน่ ๆพวกนี้สามารถถูกใชในขั้นตอนสุดทาย treeสามารถถูกแบงโดยการจองของsubtreeใน แตละ processorการเขาถึงจํานวนมากตองการใชการคํานวณบน bodyในsubtreeจะเกิดขึน้ ที่ bodyอืน่ ๆ ในsubtreeตัง้ แตในระหวางการทํางานรวมกันของsubtreeทีแ่ ตกตางกัน ความ หนาแนนของที่วางของ cellจะตองการการเขาถึงของcellมากกวา ขนาดของsubtreeจะ ถูกจองในprocessorซีง่ เปนระดับพืน้ ฐานของการทํางานเทาทีม่ นั จะทําได( เชนมีcellอืน่ ๆอีกหลาย cell ทีต่ อ งการการเขาถึง ) มากกวาจํานวนของnodeในsubtree โดยการแบง ตัวแทนของoctree ซึง่ พวกเราสามารถไดรบั load balance ทีด่ ี และการอางถึงlocalityทีด่ ี ผลลัพธทอ่ี า งถึงของขอมูลจะกลับไปสูจ านวนระหว ํ างเลขของขอมูลซึง่ มันจะไมเปน โครงสราง The Ocean Application Ocean Simulate มีอทิ ธิพลตอ eddy และ boundary ในปจจุบนั สวนใหญ Oceanจะถูกใช ในวงแคบ Red-black Gass-Seidel คือ เทคนิคในการทําซํ้าซึง่ เปนจุดสีๆ ในgrid ความ มัน่ คงและความทันสมัยของพืน้ ฐานของแตละจุดทีอ่ ยูใ กลชดิ กัน Multigird Method จะ ชวยแกไขปญหาความแตกตางโดยใชการทําซํ้าของhierarchial grid แตละgrid ใน hierarchy จะมีจดุ เล็กกวาgridทีอ่ ยูด า นลางและในจํานวนgridทีต่ าลงมาทั ่ํ ้งหมด gridจะ เพิม่ ขึน้ อยางแนนอนในทีส่ ดุ ดังนัน้ อัตราการรวมกันระหวางความตองการ execution time ทีม่ ากขึน้ ตัง้ แตมจี ดุ ของขอมูลมากขึน้ วึง่ มันจะเคลือ่ นทีข่ น้ึ หรือลงใน hierarchyของ grid ซึ่งถูกใชสาหรั ํ บการทําซํ้าในรอบตอไปซึง่ ถูกกําหนดโดยอัตราการเปลีย่ นแปลงของ ขอมูล การประมาณคาความผิดพลาดที่ทุก ๆ เวลาในการทํางานทีถ่ กู ใชในการตัดสินใจ วาจะอยูท g่ี ridเดิมหรือไม การเคลือ่ นทีไ่ ปสู gridทีแ่ ยกวา หรือเคลือ่ นไปสูg ridสุดทาย เมื่อการทําซํ้าเขามาใกลจดุ เดีนวกันทีร่ ะดับทีด่ ที ส่ี ดุ ซึง่ มันจะมีความสามารถในการแก

ปญหา ในแตละการทําซํ้ามีคา n2 สําหรับการทํางานของgridขนาด n × n และความ คลายคลึงกัน Arrayทีเ่ ปนตัวแทนของgridแตละอันจะถูกจองแบบdynamicและขนาดของ ปญหาเฉพาะที่ Ocean basin เปนพิเศษทัง้ หมดเขาสู square subgrid ซึง่ มันจะถูกจองใน การแบงของทีว่ า งใน local memory ของแตละ processor ซึง่ มันจะรับผิดชอบสําหรับ subgrid สําหรับการวัดในทีน่ พ้ี วกเราจะใชอนิ พุททีม่ ขี นาด 130 ×130 gridpoint ซึง่ จะมี การทําซํ้า 5 ขั้นตอนใน 1 ครั้ง ตัง้ แตขอ มูลไดรบั การเปลีย่ นแปลงในระหวางการทํางาน การประมวลผลทัง้ หมดจะเกิดพรอมกันทีแ่ ตละขัน้ ตอนกอนการทํางานในครั้งตอไป การติดตอสือ่ สารเกิดขึน้ ทีข่ อบของsubgridจะถูกเขาถึงโดยsubgridทีอ่ ยูต ดิ กัน Computation / Communication for the Parallel Program กุญแจพิเศษในการติดตอเกีย่ วกับประสิทธิภาพของโปรแกรมทีค่ ลายคลึงกันซึง่ เปนอัตราสวนของการคํานวณในการติดตอสือ่ สาร ถาอัตราสวนมันสูงซึง่ มันหมายถึง การมีการประยุกตใชในการคํานวณมากของสําหรับแตละการติดตอสือ่ สาร ซึง่ พวกเรา จะเห็นไดในหัวขอที่ 8.1 การติดตอสือ่ สารนัน้ เปนสวนหนึง่ ของการคํานวณทีค่ ลายคลึง กันเนื่องจากเปนการคํานวณชัน้ สูงซึง่ เปนอัตราสวนทีม่ ปี ระโยชนในการสือ่ สาร ใน ขบวนการprocessingที่คลายคลึงกันซึง่ เราใหความสนใจกับอัตราสวนของการคํานวณ ในการติดตอสือ่ สารกันนัน้ สามารถเปลีย่ นแปลงเพิม่ ขึน้ ของแตละprocessor ขนาดของ ปญหาทัง้ คูซ ง่ึ เรารูว า อัตราสวนทีเ่ พิม่ ขึน้ ของprocessorนั้นจะถูกแยกออกโดยที่ applicationสามารถเพิม่ ความเร็วมากขึน้ เพราะวาบอยครัง้ ทีเ่ ราสนใจปญหาทีใ่ หญกวา ปญหาของการrunning มันเปนสิง่ จําเปนทีจ่ ะทําใหเราเขาใจวาจะทําอยางไรในการ เปลีย่ นอัตราของขอมูลใหมปี ระสิทธิภาพสูงสุด ความเขาใจทีว่ า เกิดอะไรขึน้ เกีย่ วกับจํานวนอัตราสวนของการสือ่ สารซึง่ เราจะ เพิ่มเขาไปในprocessor พิจารณาแยกกันระหวางการคํานวณและการสื่อสารที่จะเพิ่มเขาไปในprocessorแตละตัว หรือขนาดของปญหา สําหรับ application นี้จะแสดงใหเห็นใน 8.4 ในจํานวนของcomputation ตอ processor จะเกิดขึ้นในระยะยาวและจะเกิดขึ้นอยางชาๆ ซึง่ มันจะเปนการเพิม่ ขนาดของปญหาให

ใหญขึ้นมาตราฐานของการคํานวณคือ 0 ( ) ซึง่ เปนการเขียนalgorithmทีซ่ บั ซอน scaling ของการสือ่ สารจะมีความซับซอนมากขึน้ มันขึน้ อยูก บั รายละเอียดของalgorithm ซึง่ เรา จะอธิบายรายละเอียดของแตละapplication ในหัวขอที่ 8.4 อัตราสวนของการ computation ใน communication จะถูกคํานวณจากแตละงาน ที่พัฒนาขึ้นของการcomputation และ communication โดยทวไปอัตราการเกิดจะเพิม่ ขึน้ อยางชา ๆ กับการเพิม่ ขึน้ ของขนาดของขอมูลและอัตราการลดลงของการเพิม่ processor ซึ่งมันจะนําไปสูการทําใหมีประสิทธิภาพที่เพิ่มขึ้นเพราะวาจํานวนการสือ่ สารของ processor จะเพิม่ ขึน้ ซึง่ มันจะบอกเราถึงความรวดเร็วทีม่ นั สามารถจะบอกขนาดของขอ มูลไดซึ่งพราจะเพิ่มprocessorใหกบั อัตราของเวลาในการสือ่ สาร Multiprogramming and OS Workload สําหรับขนาดของ multiprocessorขนาดเล็ก ซึ่งเราจะพบไดใน multiprogram workload ซึง่ มันจะประกอบดวย 2 การทํางานของ user และ os การใช workloadถูกแบง ออกเปนอิสระจาก compile phase ของ Andrew benchmark compile phase จะประกอบดวย processorทีอ่ ยูต ดิ กัน 8 ตัว workload จะทํางานในเวลา 5.24 วินาทีบนprocessorทัง้ 8 ตัว จะสราง 203 process และ performing 787 disk ซึง่ ตองทําการบน 3 file systemทีแ่ ตกตางกัน workload จะทํางาน กับหนวยความจํา 128 MB และไมมีการกําหนด paging ขึน้ มา Workloadจะมี 3 สวนทีแ่ ตกตางกัน compiling the benchmark จะนําไปสูเ นือ้ หา ของการ compute การติดตัง้ object file ใน library และการเคลือ่ นยาย object fileในสวนสุดทายซึง่ เปน สวนมราสมบูรณทส่ี ดุ ทีจ่ ะถูกควบคุมโดย I / O ซึง่ มีหนาทีเ่ ปนสวนใหญ และ processor สวนใหญจะไมทํางาน APPLICATION

FFT

Scaling of computation N log n / p

Scaling of communication N/p

Scaling of computation-tocommunication Log n

LU Barnes

N/p N log n / p

Ocean

N/p

√n / √p Approximately √n( log n) / √ p √n / √ p

√n / √ p Approximately √n / √ p √n / √ p

รูป 8.4 สวนของการคํานวณ การติดตอสือ่ สาร และอัตราสวนของปจจัยในขอบเขตของ ประสิทธิภาพบนเครือ่ งจักรทีค่ ลายคลึงกัน ในตารางนี้ p จะถูกทําใหเพิ่มขึ้น processor และ n จะเพิ่มขึ้นในขนาดของชุดขอมูล อัตราสวนนีจ้ ะขึน้ กับprocessorพืน้ ฐาน สวน การคํานวณจะเพิ่มขึ้นที่ n ตามอัตราสวนทีก่ าหนดให ํ ซึ่งวิเคราะหจาก 0 ( ) และสวนทีล่ ดลงในระยะยาวเพราะ p นั้นเพิ่มขึ้น ในสวนของการสือสารจะมี ความซับซอนมากยิง่ ขึน้ ใน FFT ขอมูลทัง้ หมดจะกระทําตอกัน ดังนัน้ การติดตอสือ่ สาร จะเพิ่มขึ้นที่ n และลดลงที่ p ใน LU และ Ocean การติดตอสือ่ สารจะเปนในสวนของ block ดังนัน้ มันจะเกีย่ วของกับขนาดของชุดขอมูลซึง่ ไดสดั สวนกันทีจ่ ดุ n namely √ n สําหรับการติดตอสือ่ สารทีเ่ หมือนกันในสวนapplication ทัง้ 2 นี้ จะกลับ กับ √ p Barnesมีคณ ุ สมบัตทิ ซ่ี บั ซอนมาก เพราะการกระทํากันระหวาง bodies คาตัว เลขพืน้ ฐานของการทํากันระหวาง bodiesซึง่ มันตองการการติดตอสือ่ สารเพราะ √ n ในการเพิม่ ปจจัย log n ตองการความสัมพันธระหวาง bodies ซึง่ ตัวprocessor จะเพิ่มขึ้น และในสวนของการสือ่ สารจะกลับไปสู √ p เพราะวาเวลาที่ไรผลของขอมูลประสิทธิภาพของ instruction cache มีความ สําคัญใน work loadซึง่ ในบทนัเ้ ราจะสนใจในเรือ่ งประสิทธิภาพของ data cache สําหรับ ในบททีผ่ า นมาแลวการวัดการทําวานของ workload เราจะระบุไวในเรือ่ งของ I / O system I / O system Level 1 instruction cache

Level 2 data cache

Memory 32 K bytes,two – way set associative with a 64 – byte block, one clock cycle hit time 32 K bytes,two – way set associative with a 32 – byte

Level 2 cache

Main memory Disk system

block, one clock cycle hit time 1M byte unified, two – way set associative with 128byteblock, hit time 10 clock cycles Single memory on a bus with an access time of 100 clock cycles Fixed access latency of 3 me ( less than normal to reduce idle time )

รูป 8.5 แสดงถึงการหยุดในชวงexecution timeของ processor ทัง้ 8 ตัวซึง่ ใช parameter ที่แสดง ใน list execution timeจะหยุดลงในสวนประกอบ4สวนทีไ่ รผลของการ execution ในkernel mode จะไรผลใน loop ผูใชexecution ใน code ของผูใช การเกิดขึน้ พรอมกันของการexecution หรือการหยุดรอ สําหรับการทํางานพรอมกันในเวลาเดียวกันซึง่ สามารถเปลีย่ นแปลงการทํางานของ kernelใน os ซึง่ มันไมใชการเขาถึงพรอมกันทัง้ 2อยาง Mode Idle User Sync Kernel

% instruction executed 69 % 27 % 1% 3%

% execution time 64 % 27 % 2% 7%

รูปที่ 8.5 การแจกแจงของ execution time ใน multiprogram ทีค่ ลายกันในการทํา workloadในอัตาสวนทีส่ งู ของเวลาทีไ่ รผลซึง่ มันถึงกําหนดของ disk latency เมือ่ processor หนึง่ ตัวทํางาน การวัดขอมูลสําหรับ 2workload นีถ้ กู เก็บในระบบSimOS [ Rosenblum 1995 ] การทํางานจริงและการสะสมของขอมูลถูกทําโดย

M. Rosenblum , S.Herrod and E. Bugnion of Standford University using the simos simulation system ซึง่ ไมเหมือน workload ทีค่ ลายคลึงกันในงานวิทยาศาสตรซง่ึ multiprogramming workload มี instruction cache ซึง่ ไมมปี ระสิทธิภาพทางวิทยาศาสตร มันจึงนอยทีส่ ดุ สําหรับ OS instruction cache มี miss late สําหรับ 32 byte block size 2 associate ของ cache เปลีย่ นจาก1.7% สําหรับ 32 KM cache ไปสู0 .2 % สําหรับ 256 KB cache ระดับของผูใช instruction caches miss กะโดยการประมาณคา 1 – 6 ของ OS rateซึ่งเปลีย่ นแปลงขามขนาดของ cache Centralized Shared Memory Architecture Multis เปนสิง่ ใหมของคอมพิวเตอร พื้นฐานบน multiple microprocessor ซึง่ มัน มีขนาดเล็ก มีราคาตําและมี ่ ประสิทธิภาพสูง ของmicroprocessorทีใ่ หในการออกแบบ และการสราวงของโครงสรางcomputerซึง่ เสนอขอดีทม่ี คี วามสําคัญในเรือ่ งของการอุต สาหกรรม สวนของราคาและประสิทธิภาพและความนาไววางใจใจตระกูลของ computer multisมีความเปนไปไดทจ่ี ะเปนพืน้ ฐานในอนาคตซึง่ อาจจะเปน 1 ใน 5 ของ computer ยุคใหม อยางทีพ่ วกเราเห็นกันในบทที่ 5 ซึ่งมีการใชmulti level cached มากซึง่ สามารถ ติดตอกั main memory bandwidthซึง่ เปนความตองการของprocessor ถาหนวยความจําหลัก ตองการbandwidthจาก single processorก็จะกลับคืนสูส ภาพเดิม ซึ่งmultiprocessor อาจ จะสามารถใชmemoryทีเ่ หมือนกันรวมกันได ซึง่ มันถูกเริม่ ใชในป 1980 การสังเกตเห็น นี้รวมถึงลักษณะเดนทีป่ รากฏออกมา ความเคลื่อนไหวของmultiprocessor ซึง่ นักออก แบบจํานวนมากพยายามจะสรางmultiprocessorทีม่ ขี นาดเล็กเพือ่ ทีจ่ ะทําใหprocessor หลายๆตัวสามารถทํางานรวมกันไดในครัง้ เดียวซึง่ physical memory จะติตอ สือ่ สารกัน โดยใช bus เพราะวา processor ขนาดเล็กและการลดความสําคัญในขอกําหนดสําหรับ bus bandwidthซีง่ สามารถทําสําเร็จไดโดย cachedขนาดใหญเปนเครือ่ งจักรซึง่ ราคาของ มันมีผลมากซึ่งจะใชสาหรั ํ บการจัดเตรียมทําทนพัอยางเพียงพอ เมือ่ เร็ว ๆนีก้ ารออก แบบของเครือ่ งจักรตัวอยางสามารถรับ cpu และcache systemเอาไวบนboard ไดซึ่งมา

สามารถเสียบเขากับbus back plane ได เมือ่ ไมนานมานีก้ ารออกแบบใหมกี ารเพิม่ processor 4 ตัว ใน boardและในบางทีมนั จะเปนการเริม่ ศตวรรษใหม บางที่ multi processorจะอยูบ น single die configured ที่microprocessor รูปที่ 8.1 ในหนา 638 แสดง ถึงภาพอยางงายของmachine สถาปตยกรรมทีส่ นับสนุนcachingของสวนแบงทัง้ 2 และขอมูลสวนตัว ขอมูล สวนตัวจะถูกใชโดยprocessorในขณะทีก่ ารแบงขอมูลนัน้ ถูกใชโดยmultiprocessorซึง่ จุด สําคัญอยูท ก่ี ารเตรียมการสือ่ สารระหวาง processor ตลอดถึงการอานและการเขียนขอมูล เมือ่ private item เปน cache ซึง่ มันจะ ยายไปอยูc ache อืน่ การลดลงของคาเฉลีย่ ของเวลาในการเขาถึงขอมูลของ memory bandwidth ทีต่ อ งการ ตัง้ แตไมมี processorอื่นมายืมใชขอมูลใน cached คาทีแ่ บงอาจจะซํากั ้ นในmultiple cached จะเกิดการลงใน address latency และความตองการของ memory bandwidth การจําลอง นี้เตรียมจะลดลงซึง่ มันอาจจะเกิดการแบงขอมูลซึง่ เริม่ อานโดยmultiple processor อยาง พรอม ๆกัน การแบงขอมูลของ caching จะมีปญ  หาใหมเกิดขึน้ ก็คอื cach coherence What is Mlutiprocessor cache coherence อยางทีเ่ ราเคยเห็นกันในบทที่ 6 เราไดรวู า สาเหตุของปญหาของ cache coherence สําหรับ I/O operation เริม่ ตัง้ แตการมองเห็นของ memory โดยตลอดของ cache มีความ แตกตางกันจากภาพ memory in I / O systemปญหาเดียวทีย่ งั คงเกิดขึน้ อยูใ นกรณีของ multiple processor เพราะวาภาพของmemory ถูกจับจองโดย processor 2 ตัวทีแ่ ตกตาง กันและมีคา ทีแ่ ตกตางกันสําหรับ locationเดียวกันซึง่ ในทีน่ จ้ี ะกลาวถึงโดยทัว่ ไปในเรือ่ ง ปญหาของ cache coherence Time

Event

0 1

CPU A read X

Chace content Chace content for CPU A for CPU B

1

Memory content for location X 1 1

2 3

CPU B read X CPU A store 0 into X

1 0

1 1

1 0

รูปที่ 8.6 ปญหาของ cache coherence สําหรับsingle memory location การอานและการ เขียนโดดย processor ทัง้ 2 ตัวคือ A และ B ในขั้นตนคาของcache ไมใชทั้ง 2อยาง และ X มีคาเทากับ 1 ซึง่ อยางไรก็ตามเราจะเขียนเขาไปไวใน cache การwrite-back ที่cacheจะ เพิม่ ขึน้ บางแตกจ็ ะเกิดความยุง ยากมากขึน้ หลังจากคาของXถูกเขียนโดย cache A และ memory ทัง้ คูจ ะบรรจุคา ใหมเขาไปแต cache Bไมสามารถจะทําไดและถา Bสามารถ อานคาของ X ไดมนั ก็จะรับคา 1 เขาไป ซึ่งพวกเราสามารถพูดไดวาmemory system คือ coherent ถาการอานทุก ๆครัง้ ของขอมูลกลับกัน การกําหนดอยางนีจ้ ะมีรปู รางหนาตาที่ แตกตางกันของ memory system ทัง้ คู คือ critical ซึง่ ถูกเขียนมาอยูใ นรูปshared-memory program รูปที่ 1 การเรียกcoherenceคาอะไรทีส่ ามารถสงกลับโดยการอานได รูปที่ 2 การ เรียก consistencyจะยุตลิ งเมือ่ การเขียนสงคากลับโดยการอาน เราเริม่ มาดูกนั ที่ coherenceเปนอยางแรก ระบบของขอมูลจะ coherent ถา 1. A read by a processor , P , to a location X that follow a write by p to X, with no write of X by another processor occuring between the write and the read by p , always return value written by p 2. A read by a processor to location x that follow a write by another processor to X return the written Value if the read and write are sufficiently separated and no another write to X occur between 2 access. 3. Write to the same location are serialized that is , 2 write to the same location by any 2 processor are seen in the same order by all processor . For example if the value is 1 and then 2written to a location , processor can never read the value of the location as 2 and then later read it as 1

คุณสมบัติงาย ๆขอแรกคือรักษาลําดับการทํางานของprogram ซึง่ เราคาดหวังวามันจะ เหมาะสมอยางแทจริงในuniprocessor 2 .กําหนดวาอะไรมีความหมายตอ coherentใน ภาพของmemory ถา processor สามารถทําการอานขอมูลอยางตอเนือ่ งซึง่ มันจะทําให พวกเราพูดวา memoryเปน Incoherent ความจําเปนของการเขียนอยางตอเนือ่ งจะละเอียดมากกวาแตมคี วามสําคัญพอพอ กัน ซึง่ คิดวาเรไมสามรถเขียนกันไดอยางตอเนือ่ งไดและprocessor p1 เขียนตาม location X โดย p2 ก็กําลังเขียนใน location X การเขียนตามลําดับสามารถรับประกันไดวา ทุก ๆprocessor จะมองเห็นการเขียนของขอ มูลตามลําดับโดย p2ที่จุดเดียวกัน ซึง่ ถาพวกเราไมเขียนขอมูลอยางตามลําดับมันจะเกิด ขึน้ ในรูปของ processor บางตัวสามารถมองเห็นการเขียนของ p2 ในครั้งแรกแลพครั้ง ตอมาจะมองเห็นการเขียนในรูปของpซึ่งจะดูแลคาทีถ่ กู เขียนโดย p1อยางไมมกี ําหนด ซึ่งทางที่งายทีส่ ดุ คือการหลีกเลีย่ งความยากในการเขียนอยางเปนลําดับ ดังนัน้ การเขียน ทั้งหมดจึงเกิดขึน้ ในlocationเดียวกันสามารถเห็นไดในรายการเดียวกันซึง่ ความเหมาะ สมนีถ้ กู เรียกวาwrite serialization อยางไรก็ตามความเหมาะสมทั้ง 3 ขอนี้จะสมารถ อธิบายและรับประกันไดโดยcoherence คาจะถูกเขียนตามลําดับความสําคัญ เราตองเขาใจวาพวกเราไมสามรถทําตามความตองการคือการรับคาของ X อยาง รวดเร็ว เปนคาทีอ่ า นสําหรับ X โดย processor ตัวอืน่ ๆ เชนการเขียน X บน processor ตัว1 มากอนการอานของ X บน processor ตัวอืน่ ดวยเวลาเพียงเล็กนองมันอาจจะเปนไป ไมไดมนการรับประกันวาการอานคากลับของขอมูลจะถูกทําขึ้น การเขียนขอมูลจะไม เกิดขึน้ ทีจ่ ดทางซายของprocessor มันจะเปนผลทีแ่ ทจริงเมือ่ คานัน้ คานัน้ ตองถูกเขียน และมองเห็นโดยผูอ า นซึง่ ถูกกําหนดโดย memory consistency model ซึง่ จะเปนหัวขอที่ จะพูดกันในสวนที่ 8.6 coherence and consistency ซึ่งcoherenceจํากัดการทํางานของ การอานและเขียนใน memory locationทีเ่ ดียวกันในระหวาง consistency ซึง่ จํากัดการ อานและเขียนและความเกี่ยวของในการเขาถึงmemory location อืน่ ๆซึ่งมีความงาย เพราะเราตองการการเขียนอยางไมสมบูรณจนกระทัง่ processor ทัง้ หมดจะมองเห็นผล กระทบของการเขียนและprocessor จะไมสามารถเปลีย่ นลําดับการเขียนของทุก ๆการ เขาถึงในmemory อืน่ ๆ ในการยอมให processor สามารถทํางานตามลําดับแตจะบังคับ ใหprocessor ทําการเขียนในprogramใหสมบูรณตามลําดับซึง่ มันเปนทางเลือกทีด่ ี

Basic Schemes for Enforcing Coherence ปญหาcoherent สําหรับmultiprocessor and I /O คือระหวางความคลาคลึงกัน ของตนกําเนิดซึง่ มีลกั ษณะพิเศษทีแ่ ตกตางกันซึง่ จะทําใหเกิดการแกปญหาซึง่ ตางกับ I/O ที่การจําลองmultidataซึง่ ไมคอยจะเกิดขึ้น เมือ่ ไหรกต็ ามทีเ่ ปนไปไดจะไดรบั การหลีก เลี่ยงที่ 1โปรแกรม จะทํางานบน multiprocessor จะตองการจําลองขอมูลในหลาย ๆ cached ใน coherence multiprocessor cache จะจดเตรียมการยายทีแ่ ละจําลองการแบง ของขอมูล cohernce cache จะเตรียมการยายขอมูลไปสูlocal cache และถูกใชในรูปแบบ ที่เห็นไดงาย การลดลงของการเขาถึงการแบงขอมูลซึง่ ถูกจองในระยะไกล coherent cache จะเตรียม การจองสําหรับการแบงขอมูลซึง่ จะเริม่ ทําอยางพรอมกันตัง้ แตcacheสามารถทําการจอง ขอมูลในlocal cache ซึ่งมันจะสนับสนุนการยายทีข่ องการจําลองซึง่ ประสิทธิภาพในการ เขาถึงขอมูลจะถูกแบง ดวยเหตุนค้ี อ นขางจะมีความหมายในการแกปญ  หาโดยการหลีก เลีย่ งมันในsoftware multiprocessor ในสวนนอยจะรับเอาการแกปญ  หาของhard ware โดยนํา protocol เขาสูการ maintain coherent caches protocol จะ maintain coherence สําหรับ multiple processor จะถูกเรียกวาcache coherence protocol และในการimplement a cache coherence protocol คือ tracking state ของทุก ๆการแบงของdata block ชนิดของprotocol มี2 ชนิดทีใ่ ชแตกตางกันในการเขา ถึงของการแบงtrack • Directory based – The sharing status of a block of physicak memory is kept in just one location , called the directory , we focus on this approach in section 8.4 when we discuss scalable shared memory architecture • Snooping – Every cache that has a copy of the data from a block of physical memory also has a copy of the sharing status of the block,and no centralized state is kept. The cache are usually on a share-memory bus , and all cache controller monitor or snoop on the bus to determine whether or not they have a copy of a block that is requested on the bus . We focus on this approach in this section

การsnooping protocolเริ่มเปนทีร่ จู กั กับmultiprocessor การใชmultiprocessor and cache จะถูกทําในการแบงmemory เดียวเพราะวาสามารถใช protocolกอนทีจ่ ะใช physical ติด ตอกันโดย busเขาสูm  emory ซึง่ เขาถึง interrogate ของสถานะของ cacheกอน Alternative Protocol ในทีน่ ม้ี ี 2ทางทีใ่ ชในการอธิบายการmaintain cache ในลําดับของ subsectionซึ่ง วิธแี รกรับประกันไดวา processorจะไมนบั การเขาถึงของขอมูลกอนทีม่ นั จะเขียนลงไป ซึง่ ในทีน่ ส้ี าหรั ํ บprotocolจะถูกเรียกวา write invalidate protocol เพราะวามันจะยกเลิก การจําลองในแตละการเขียนอืน่ ๆ ซึ่ง protocolสวนมากจะอยูห า งไกลกัน สําหรับการ snooping and directory scheme ซึ่งรับประกันไดวา จะไมมกี ารจําลองการอานหรือการ เขียน เมือ่ การเขียนเริม่ ขึน้ cache ทัง้ หมดจะถูกจําลองขึ้นในแตละรายการ เราจะมองดูวา coherenceรับประกันไดอยางไรพิจารณาการเขียนโดยการอาน processor ตัวอืน่ ตัง้ แต การเขียนตามความตองการของการเขาถึงและทุกๆการจําลองตองเริม่ อานprocessorแต ละตัวดังนั้นเมื่อการอานเริ่มขึ้นขนการ miss cache จะทําใหเกิดการfetchขอมูลชุดใหม สําหรับการเขียนพวกเราตองเขียน processorซึง่ ไมนบั การเขาถึงขอมูล การปองกัน processor ตัวอืน่ ๆจากการเริม่ ทําการเขียนในเวลาเดียวกันถา processor ทัง้ 2 ตัวพยายาม ที่จะเขียนขอมูลทีเ่ หมือนกันซึง่ 1ใน จํานวนทัง้ หมดจะทําสําเร็จสาเหตุคอื processorแต ละตัวจะทําการจําลองขึ้นมาซึ่งสําหรับprocessorมันจะทําการเขียนอยางสมบูรซ ง่ึ มันจะ รับการจําลองของขอมูลใหมและจะตองทําการปรับปรุงคาใหทฃม เพราะฉะนั้นprotocol จะบังคับใหการเขียนมีลาดั ํ บ รูปที่ 8.7 จะแสดงตัวอยางของprotocol แตละตัวสําหรับการsnooping bus กับการwrite back ทีเ่ กิดขึน้ ใน cache Processor activity

Bus activity

Content of Content of Content of CPU A’s cache CPU B’s cache memory location X

CPU A read X Cache miss for X CPU B read X Cache miss for X CPU A write 1 Invalidation for to X X CPU B read X Cache miss for X

0 0

0 0

0

1 1

0 0

1

1

รูปที่ 8.7 แสดงตัวอยางการทํางานของ protocolแตละตัวบน snooping bus สําหรับ single cache block (X) กับการwrite balk in cache พวกเรารูว า cacheจะไมรับคาของ X และคาของ X ใน memory มีคาเทากับ 0 cpu และ memory จะแสดงคาหลังจากทีก่ ารทํางานของ processor and bus จะเกิดขึน้ อยาวงสมบูรณ A blank indicated จะไมทางานหรื ํ อไมเกิด cache copyเมือ่ มีการmiss ครัง้ ที่ 2เกิดขึน้ โดย B cpy A จะรับผิดชอบการยกเลิกคาจากmemory cached b and memory จะประกอบดวยคาของ X ทีถ่ กู update ทางเลือกในการทีท่ าให ํ protocol invalidate คือการupdate การจําลอง cached ของ ขอมูลเมือ่ itemนัน้ ถูกเขียน protocolนีจ้ ะถูเรียกวา write update or write broadcast protocol ซึง่ มันจะเก็บ Bandwidth requirent ของ protocolของชนิดนีซ้ ง่ึ มันจะเปน ประโยชนสาหรั ํ บ trackหรือไมนั้น ซึ่งไมมcี acheที่ไดรบั การแบงไวในทีน่ ซ้ี ง่ึ จะการ กระจาย update in every cache ในรูปที่ 8.8 จะแสดงตัวอยางของการ update protocol in operation ในระยะเวลา 10 ป ตัง้ แต protocolไดัรบั การพิจารณาการinvalidate เกขึน้ นัน้ ผูช นะการออกแบบสวนใหญ ถึงไดเขาใจวาทําไมถึงไดเริม่ กําหนดความแตกตางของประสิทธิภาพขึ้น

Processor activity

Bus activity

CPU A read X Cache miss for X CPU B read X Cache miss for X CPU A write 1 Write to X broadcast of X CPU B read X

Content of CPU A ‘s cache

Content of CPU B ‘s cache

Content of memory location X 0 0

0

0

0

1

1

1

1

1

1

0

รูปที่ 8.8 คือตัวอยางการupdate or broadcastซึ่ง protocol จะทํางานบน snooping bus สําหรับ single cache blockกับการwrite back cache cacheเริม่ แรกจะเก็บแตคา ของ Xไว ในmemory คือ 0 cpu และmemoryจะแสดงคาหลังจากที่ processor และ bus ทํางาน อยางสมบูรณ A จะแสดงวาไมมีการทํางานหรือไมมกี ารจองcache เมือ่ การเขียน cpu A ทัง้ คู ใน cache ใน cpu B cและmemory location ของ X ถูก update ประสิทธิภาพทีแ่ ตกตางกันระหวางการwrite update and write invalidate protocolจะเกิดขึน้ จากลักษณะพิเศษ 3 อยางดังนี้ • Multiple erite to thw same word with no inventing reads require multiple write broadcast in an update protocol. But only one initial invalidation in a write invalidate protocol . • With multiword cache block , each word written in a cache block require a write broadcast in an update protocol , while only the first write to any word in the block need to generate invalidate in d validation protocol. An invalidation protocol work on cache block, while an update protocol must work on individual work ( or byte,when byte are written) . It is possible to

try to merge write in a write broadcast scheme , just as we did for write buffer in chapter 5 , but the basic different remain • The delay between writing a word in one processor and reading the written value in another processor is usually less in a write update scheme, since the written data are immediately updated in the readrer’ cache ( assuming that the reading processor has a copy of the data ). By comparison ,in an invalidation เพราะวาbus และ memory bandwidth ซึง่ ปกติแลวมันcommodity ใน bus based multiprocessor การinvalidationจะกลับมาในprotocolซึ่งเปนตัวเลือกสําหรับการimplement สวนการ update protocol จะเปนสาเหตุของปญหาสําหรับ memory consistency model การลดลง ของประสิทธิภาพทีเ่ กิดขึน้ ของการupdateจะถูกกลาวถึงใน 3 จุด ในการออกแบบการนับ ของprocessorทีม่ ขี นาดเล็กมาก ๆ( 2 – 4 ) ที่ processorจะเกิดการ bandwidthขนาดใหญท่ี ตองการการupdateซึ่งมันอาจจะรับได อยางนอยการใชแนวทางการเพิม่ ขึน้ ของประสิทธิ ภาพของprocessor เกีย่ วกับการเพิม่ ของความตองการในbandwidth ซึง่ เราหวังวาการ update จะถูกใชบอยครั้งสําหรับเหตุนเ้ี ราจะสนใจเพียงการ invalidate protocol เทานัน้ Basic Implementation Technique การดูแลในการimplementing ของ invalidate protocol ในเครือ่ งจักรทีม่ ขี นาดเล็ก ซึง่ มันจะมีประสิทธิภาพในการinvalidate ของ bus ประสิทธิภาพในการinvalidate ของ processorทําใหไดมาซึ่งการเขาถึงของbus เพราะการกระจายทีอ่ ยูข องการinvalidate บน bus processor ทัง้ หมดจะทําการsnoopอยางตอเนือ่ งบน bus watching address ตัวcheck processorที่ address บน bus ใน cache หรือไม ดังนัน้ ขอมูลทีต่ รงกันในcacheจะถูก invalidate ตามลําดับของการเขาถึงของขอมูลโดยการทํางานของbusซึง่ เปนไปตามลําดับ ตัง้ แต processorทัง้ 2 ตัวทําการเขียนในlocation เดียวกันเสร็จสมบูรณ การเขาถึง buss access ของprocessor ตัวแรก จะเปนสาเหตุใหprocessorตัวอืน่ ทําการจําลอง invalidate

ซึ่งจะเกิดลําดับการเขียนอยางแทจริง การ implementationนี้ จะเปนการแบงขอมูลซึง่ จะ ทําไดไมเสร็จสมบูรณจนกระทัง่ เกิด buss access การเพิ่มขึ้นของการ invalidate เปนปญหาทีย่ งั ไมไดแกของ cache block :ซึง่ มัน จะเริ่มเกิดขึ้น เราจําเปนทีจ่ ะตองlocated data item เมือ่ cache เกิดการmiss ขึ้นในการ write through cache มันจะงายตอการคนหาขอมูลกอนหนานี้ ตัง้ แตการเขีนรขอมูลกลับ เขาไปใน memory จากคาของขอมูลเมือ่ เร็ว ๆนี้ ซึง่ จะสามารถทําการ fetch ได อยางไรก็ตามสําหรับการwrite back cache มีปญ  หาทีพ่ บเมือ่ เร็ว ๆ นี้คือ คาของ ขอมูลมันมาก ตั้งแตคาของขอมูลซึ่งอยูใน cache มันมากกวา ในmemory สิง่ ทีน่ า สนใจ คือการ write backสามารถใชในการ snooping ทีเ่ หมือนกันได สําหรับการmiss ของ cache การเขียนและการsnoop ของการแทนขอมูลทุก ๆ address บน bus ถา processor สามารถคนหาการจําลองตามcache block ซึง่ มันจะเตรียมcache blockในการรับผิดชอบ การอาน และการเขาถึงmemory ตัง้ แตเกิดการตําลงของการ ่ write back cache สําหรับ memory bandwidth พวกมันไดเตรียมการในmultiprocessor แมจะมีการเพิม่ ขึน้ อยางสม บูนณเพียงเล็กนอยเพราะฉะนัน้ พวกเราจะสนใจในการ implementation กับการ write back cache ตามปกติ cache จะสามารถตอใชเปนเครือ่ งมือ ทีใ่ ชในการ processor ของ smooping ยิง่ กวานัน้ valid bit ของแตละ block จะทําเครือ่ งมือเสียงาย อาน misses , ใช แพรโดย invalidation หรือโดยแตละเหตุการณเปนทีต่ รงไปตรงมา เริม่ แตมนั เปนคําตอบ ที่ไววางใจบนความสามารถของ snooping เพือ่ ผูเ ขียนอยางพวกเราจะชอบและรูห รือจะ คัดลอกสิง่ ตาง ๆ ของ block ใหเปน cache , เพราะวาถาไมคัดลอกใหเปน cache แลวเมือ่ เขียนแลวตองการจะเปนทีท่ เ่ี ก็บไวบน bus ในการเขียน write-back บน cache การที่ เขียนสัง่ แลวไมยอ หรือดึงของทัง้ คู (block and cache) เวลานํามาใชโดยการเขียนแลว จะ ทําให เปนการของ bandwidth ได track หรือไมก็ cache block เปนการแบงพวกเราสามารถทีจ่ ะเพิม่ สิง่ ทีพ่ เิ ศษให เขารวมกับแตละ cache ของ block , เพียงเทานีเ้ ราก็จะไดทง้ั dirty bit and valid bit โดย แสดงถึงความตองการทีจ่ ะเพิม่ bit หรือการแบง block ,เราสามารถทีจ่ ะกําหนดและเขียน validdate ได เมือ่ เขียน block ไดแบงและกําหนดขึ้น cache ทัว่ ไปดวย invalidation on

bus and marks block เปนการเบือ้ งตน ในขางหนาตอไป invalidations จะเปนการสงไป โดย processor เพื่อ block processor คนเดียวจะคัดลอก cache block เปนปกติ จะเรียก cache block ของตัวเองขึน้ มากอน เมื่อไดสง invalidation แลว เจาของ cache block ก็จะกําหนด การเปลีย่ นแปลง จากแบบรวมกันไปเปนแบบไมรว มกาน (หรือ เวนไวแต) ถา processor อีกคนหนึ่งไดขอ เปนคนสุดทายใน cache block ก็จะเปนการกําหนดการแบบรวมอีกครัง่ หนึง่ เปนการขอ โดย processor อีกคนหนึง่ และกําหนดการทํารวมกันดวย เริม่ ตัง่ แตทกุ bus จะทําการ ตรวจสอบ cache-address ทีต่ อ นี่ก็เปนขีดความ สามารถทีจ่ ะเขาถึง CPU ของ cache ได สิง่ ทีส่ ามารถพอจะเปนไปไดจะมีเทคนิคหนึง่ หรือสองเทคนิค : ภาพจําลองของการตอ หรือการใชของ multilevel cache กับ inclusion ตรงทีข่ น้ั ตอนของ CPU จะเปน subset ของทางทีม่ อี ยูข า งหนา ถาการตอทัง้ สอง เมือ่ CPU และไดกระตุน snooping ก็จะ process ความเหมือนกันออกมา บน cache misses processor เพื่อตองการที่จะชี้ขาด และเพือ่ ตองทีจ่ ะทําใหการตอของทัง้ คูด ขี น้ึ เชนกันถา เกิดเครื่องจักรไดพบการตอเขามาของ snooping , มันก็จะตัดสินใจเพือ่ ทีจ่ ะตัง้ ทัง้ คูเ ขาไป ตอ (จะเรียก invalidate or ก็จะแบง bit) ดังนัน้ อาจเปนไปไดท่ี ขอมูลของ cache จะมีการ แกไข และ copy of block ออกมา การตอเชนนี้ processor จึงตองการครอบคลุมเมือ่ cache ตองการทีจ่ ะเขาถึงเวลาทั้หมดของการคัดลอก snoop ลงใน cache เพราะฉะนั้น การทําของ snooping ก็จะเปนการชาเมือ่ cache เปนการ dealing กับ misses ถา CPU ใช multilevel cache กับคุณสมบัตทิ ก่ี วาง เมือ่ ทุกทางเขาใน cache เบือ้ ง ตนก็จะกลายเปนในขัน้ ปฐมภูมิ ดังนัน้ การกระทําของ snoop เปนขัน้ ปฐมภูมขิ อง cache , เมื่อนั้นก็จะปราศจากขั้นเบื้องตันจนถึงขั้นที่ยกระดับขึ้นและความเปนไปไดของการแก ไขขอมูล ซึง่ เปนการเก็บของ processor ทีบ่ อ ย ๆ ตัง้ แต multiprocessor ทัง้ หลายใชแบบ multilevel cache ถึงการลด bandwidth คําสั่งของ processor คนเดียว ทีเ่ ปนการรับเอาการ ออกแบบมาใชบางเวลา มันก็เคยเปนการใชทง้ั สองตอกันของขัน้ ปฐมภูมิ ถึงอนาคตทีจ่ ะ มีการลดชวงชิงระหวางการกระทํา CPU และ snooping เราไดสนทนาคุณสมบัติในราย ละเอียดอยางกวางขวางตามตารางที่ 8.8 คุณอาจจินตนาการเอง นัน้ เปนการเปลีย่ นแปลงบนการติดตอของ cache ขึน้ อยู กับแบบแผนเปนฐานตํ่าหรือขั้นฐานสูง เมือ่ นัน้ cache เปนการ write-back or write-

through , เมื่อปรากฎขึน้ และถา และอยางไร ถาความเปนกรรมสิทธิเ์ ปนการบันทึก ดัง ภาพที่ 8.9 สรุปวา snooping cache-coherence protocols ทัง้ หลายและการแสดงเครือ่ ง จักรนั้มใี ชหรือนัน้ เปนใชของ protocols An Example Protocols Bus-based ติดตอ protocols เปนการสงเสริมทีบ่ อ ยโดยรวมกันซึง่ ไดกาหนด ํ ความควบคุม node ที่แนนอนเปนการควบคุมการตอบรับทีข่ อจาก processor และจาก bus , การเปลีย่ นแปลงการกําหนดของทางเลือก cache-block ,ดังนัน้ การใช bus เปนการ เขาถึงขอมูลหรือถึง invalidate เปนขอโดยทัว่ ไปโดย โดย processor cache ถึง node ในตารางสิง่ เหลานีท้ ม่ี าจาก bus เราสามารถ อธิบาย protocol วาไมเปนการแบงแยกระหวาง write-misses เมือ่ มีการเขียนเก็บไวใน bus processor กับการคัดลอกของมันใน cache block invalidate in cache write-back if block อยูก เ็ วนไวแต cache 1 ตัว cache อีกตัวก็ แบบ write-back ของ block ปฏิบตั กิ บั การเขียน write-hit ถึงการรวมกับ blocks cache misses ก็จะลดตัวเลขของคาทีแ่ ตกตาง จะจัดการกับ bus และก็จะเนการควบคุมงาย ๆ จะแสดงแผนผัง finite-state เพื่อใช cache block เดีย่ วใน write-invalidation protocol and write-back cache ดังตัวอยาง ทีก่ ําหนดทัง้ 3 ของ protocol เปนแบบจําลอง ถึงการแสดงพึน้ ฐานของการสงไปบน CPU (บนดานซาย) ในทางตรงกันขามพึ้นฐาน การสงไปบน bus (บนดานขวา) ชนิดของ Blodface เปนการใชในการติดตอกันใน bus ในทางตรงกันขมสถานะไดเก็บความเชือ่ ถือในสถานะบน bus สิง่ ทีก่ าหนดใน ํ node ได แทนของทางเลือกพิเศษของ cache block โดย processor หรือ การขอ bus สิง่ ทีกําหนด ใน node ไดแทนของทางเลือกพิเศษของ cache block โดย processor หรือการขอ bus ทั้งหมดทีไ่ ดกําหนดบน cache protocol จะเปนความตองการใน uniprocessor cache , ในทางตรงกันขาถึง invalid , valid (and clean) and dirty state ทัง้ หมดของการ เปลีย่ นการแสดง โดยสวนโคงของครึง่ ซายของภาพที่ 8.11 จะตองการใน write-back uniprocessor cache : แตกตางกันใน multiprocessor การควบคุมติดตอโดยทัว่ ไปใน wirte-misses เมื่อควบคุมใน write-hit เพื่อ cache block ที่ใชรว มกันสิง่ ทีก่ ําหนดในการ

แสดงโดยสวนโคงครึง่ ทางขวาของภาพที่ 8.11 เปนการตองการติดตอและจะไมปรากฎ ทัง้ หมดใน uniprocessor cache ในความเปนจริง นัน้ เปนหนึง่ finite-state ของเครือ่ งจักร ตอ cache , with stimuli coming เชนกันจาก ผูชวย CPU หรือจาก bus ดังแสดงที่ภาพ 8.12 อยางไรก็ตาม ไดกําหนดการสงไปในครึง่ ทางขวาดังภาพที่ 8.11 เปนสวนรวมกัน กับนัน้ ในทางครึง่ ซายของภาพจากตารางเดีย่ วเมือ่ ของแตละ cache block ทําไมถึงเขาใจในงาน protocol นัน่ เปนการสังเกต valid cache block เปนเชนนี้ ในการแบงการกําหนดใน multiple caches หรือ ในสิง่ ทีเ่ วนไวแตครึง่ ทีก่ าหนดอย ํ างแน นอนในหนึ่ง cache การกําหนดการสือ่ สารทีเ่ วไวแต (ซึง่ เปนการขอของ processor ถึง การเขียนถึง block) การขอ write-misses ซึ่งเปนสิง่ ทีอ่ ยูบ น bus ,เพราะ cache ทัง้ หมดจะ ทํา block invalid , ในการเพิม่ ถาสิง่ ทีก่ ําหนดเวนไวแต cache ทีม่ ี block , นั้น cache ทีจ่ ะ เปน write-back ซึง่ บรรจุ block หรือบรรจุในสิง่ ทีอ่ ยูต ามตองการ สุดทายถาการอาน misses เกิดขึน้ บน bus ถึง block , เปนสวนตัวของ cache ทีจ่ ะทํามันใหรวมกัน , เพื่อแบง การเรียงเขียนการขอบน ship ตัวเดียวกัน ดังในภาพที่ 8.12 ซึ่งอานแขน และ writemisses on bus , เปนสิง่ จําเปนของสวนประกอบของ snooping of protocol คุณสมบัติ หนึง่ นัน้ เปนสิง่ ทีด่ ารงใน ํ protocol และในอีก protocol เปนตน อีกอยางหนึง่ ก็เปน vlock ความจําในการกําหนดการแบงเปนการเพิม่ ความจําเสมอ นีเ่ ปนการยกตัวอยางและจะ แสดงรายละเอียดใน section ที่ 8.5 ถึงแมวา ตัวอยางของ cache protocol จะถูกมักย็ งั ละเลยตัวเลขของทีซ่ บั ซอนทีจ่ ะ เปนวิธที ําใหมน่ั คงสิง่ ทีส่ าคั ํ ญมากของสิง่ นีจ้ ากการสมมติกค็ อื atomic นัน้ ก็เปนคําสัง่ ที่ สามารถเปนคําสั่งที่เกิดขึ้นชั่วคราว ดังตัวอยาง รายละเอียดของ protocol ทีส่ มมตินน้ั สามารถทีจ่ ะปกปอง write-misses ,ไดมากโดย bus และรับรองการตอบรับของ atomic เดี่ยวในความเปนจริงอาจไมถูก อยางเดียวกันถาเราตองการใชการติดตอ bus (ดูใน chapter 6.section 6.3) เมือ่ นัน้ การอาน misses จะไมเปน atomic ในการเพิม่ ถึงการเปลีย่ น protocol ถึงการรักษาทีเ่ หมาะสม สิง่ ที่ nanotomic นํา เขามาอาจจะเปนไปไดท่ี protocol สามารถทีจ่ ะ deadlock ความหมาย นัน่ มันก็คอื การแผ ที่กําหนดทีใ่ หมนั ทีจ่ ะไมสามารถทีจ่ ะดําเนินตอไป สิง่ ทีย่ น่ื ออกมาตอทายจํานวนมากกับ

ความทีย่ งุ ยากทีม่ เี ปนรุน ๆ protocol สามารถทีจ่ ะแสดงใหเปนการแกไขจํานวนมากกับ nanatomic ไดเขียนกับการนําเขามาสูการ deadlock รูปแบบทีก่ ําหนด ทีเ่ ปน protocol ทีต่ ดิ ตอซึง่ จะอยูใ นเวลาทีแ่ ทจริง กวาการใชใน แบบฝกหัดทัง้ สองอยางทีง่ า ยดาย อยางแรก ก็การติดตอใน protocol ถึงสวนทีก่ าหนดทั ํ ว่ ไปเวนไวแตการเขียน write-misses on bus และเราสมมตินั้นที่ขอ cache เสมอทีบ่ รรจุ block ที่เต็มและก็กลับ ไปเต็มอีกครัง้ นีเ่ ปนรายละเอียดของเครือ่ งมือ ความเปนจริง protocol ไดแบงแยกระหวาง write-misses and write-hit , ซึง่ สามารถเกิดขึน้ เมือ่ cache block เปนสิง่ ทีแ่ บงมาตัง้ แตดง้ั เดิมเชนนี้ missed เปนการเรียก ownership หรือ upgrade missed , ตั้งแตนน้ั ก็จะเปนการพาดพิงถึงการเปลีย่ นแปลงถึงกําหนดของ block แตไมทาํ ใหข้ึนอยูอ ยางแทจริงทีจ่ ะขอรับขอมูล ถึงการสนับสนุนการเปลีย่ นแปลง protocol ใช invalidation operation , ในการเพิม่ ถึง write-misses กับคําสัง่ เชนนีอ้ ยางไรก็ตาม เครือ่ ง มือทีอ่ ยูใ นเวลานีข้ อง protocol จะมาแบบเล็กนอยกวา หลักอยางทีส่ องจะงายกวา ก็คอื เครือ่ งจักรทีจ่ ะติดตอ ระหวาง cache block เปน สิ่งทีแ่ บงจริงและหนึง่ ในนัน้ จะออกใน cache หนึง่ อยางแนนอน นีเ่ ปนการเพิม่ ของ “clean and private กําหนดการตัดการติดตอสิง่ ทีต่ อ งการทัว่ ไปบน bus และบนการเขียน ของ block ถึงแมวา จะทําใหสงู และกวางขึน้ ใชการประยุกตของ cache เชนกันขอมูลบน misses และการแบงของ block สวนถัดไปของประสิทธิภาพทัว่ ไปของ protocol เพื่อ เปลีย่ นและ multiprogrammed workload Performance of Snooping Coherence Protocols ใน bus-based multiprocessor ใช invalid protocol , ปรากฎการณทแ่ี ตกตางทัง้ หลายอยางรวมกันก็จะถึงการตกลงถึงประสิทธิภาพ ในบางสวนของ cache ทัง้ หมด ประ สิทธิภาพก็จะเปนการรวมของการปฏิบตั ขิ อง uniprocessor cache miss traffic and traffic เพราะโดยการสือ่ สารซึง่ ผลลัพธ ใน invalidations และการเรียง cache misses การเปลีย่ น การนับของ processor cache size and block size สามารถทีจ่ ะเปนผลรายนัน้ แหละทัง้ สองก็เปนสวนประกอบของอัตรา misses ในทางทีต่ า งกัน ระบบความสําคัญถึงการ ปฏิบัติตวั ถึงการรวมกันของผลกระทบของทัง้ สอง

Performance for the Parallel Program Workload ใน section, เราปลอบการใชในการเรียนประสิทธิภาพของทัง้ สี่ เทียบเทา โปรแกรมเพื่อเปนเกณฑ และขนาดของปญหา ดังนี้ • Baners-Hut- 16K run ได 6 ครั้ง (การตั้งความแนนอน 1.0 ชนิด และจากสภาพความ จริง) • FFT- 1 ลาน จุดทีแ่ ยกกันไมได • LU-A 512 * 512 matrix เปนการใชกบั 16 * 16 block • Ocean-A 130 * 130 grid กับชนิดของ error ทีม่ ลี กั ษณะกวาง ในการมองทีอ่ ตั รา misses processor เปลีย่ นแปลงการนับ ขนาดของ cache , และ ขนาดของ block , เราไดแยกออกเปนสวน ๆ อัตราการรวมถึงการติดตอ misses และ ปกติของ uniprocessor misses ปกติ uniprocessor misses จะประกอบดวยขีดความ สามารถทีต่ รงกันและเกณฑ misses สามารถทีจ่ ะ misses และ write misses ที่ ตองการทีจ่ ะยกระดับ block จากการแบง protocol กลับเปนการไมแบงระหวาง private และ shared cache block ดังภาพที่ 8.13 จะแสดงขอมูลของการประยุกต เราเพิม่ ตัวเลขของ processor จาก 1-16 ถาเก็บขนาดของปญหาทีม่ น่ั คง เราก็จะเพิม่ ตัวเลขของ processor ได จํานวนผลรวม ของ cache ทีเ่ พิ่มเพราะความสามารถที่จะหนุด misses ในทางตรงกันขาม ,การเพิ่มของ processor นับบอย เพราะรวมจํานวนของการติดตอทีเ่ พิม่ ขึน้ ในทางเพราะการติดตอ misses ถึงการทีป่ รกฎขึ้น จํานวนของทีม่ องผลทีแ่ ตกตางโดยการประยุกต ใน FFT ขีดความสามารถการหยุดของอัตรา miss (จากใกลเคียง 7% ถึงสิง่ ทีเ่ พิม่ มากกวา 5%) แตการติดตออัตรา miss ทีเ่ พิม่ (จาก 1% ถึงประมาณ 2.7%) นําถึงหารยืน ยันอัตราทัง้ หมดของ miss การแสดง Ocean การรวมของผลกระทบ ทีร่ วมตัวการแบงที่ ชาของ grid และอยางไร grid boundaries การแบงตามสวน ถึง boundary ของแตละสวน ของ grid , ถาความสามารถ misses เปนขอและสนองถึงเนือ้ ทีข่ อง grid ดังนัน้ การรวม ผลของ cache ถาเก็บขนาดของปญหาของผลรวม จะเจาะจงความสําคัญของผลกระทบ บนความสามารถอัตรา misses ทีล่ ด จนกระทัง่ แตละ subgrid ที่เหมาะสม กับสิง่ ทีเ่ กีย่ ว กับบุคคล cache ของ processor สัญลักษณในการกระโด ใน misses ระหวางหนึง่ และ สอง processor ที่เกิดขึน้ เพราะวาของการปะทะทีเ่ กิดขึน้ จากทางซึง่ multigrid เปนการ

เขารวมถึง cache การปะทะเปนการเสนอเพือ่ direct-mapped และ two-way ของ cache ที่ เขารวมบนอัตรา miss บางเวลาเพราะ เพิม่ นอยมากบางเวลาเพราะลดลง การเพิ่มขนาดของ cache มีผลประโยชนบนประสิทธิภาพ ตัง้ แตไดลดนอยของ การสิน้ เปลือง cache misses ตามทีอ่ ธิบายดังภาพที่ 8.14 ไดมกี ารเปลีย่ นแปลงในอัตรา ของขนาด cache เปนการเพิม่ ขึน้ , แสดงการแบงของอัตราของ miss ทีก่ ําหนดการติดตอ missed เปนการลดอีกครัง้ เมือ่ เราอาจจะคาดหวัง เมื่อขนาดของ cache เพิม่ ขึน้ การติดตอ และ plateaus ใน miss rate ในการติดตอในตัวถึงการนําทีบ่ อ ยครัง้ ของการติดตอ misses นั่นไมเปนผลรายโดยการเพิม่ ขนาดของ cache ดังนั้นถาขนาดของ cache เปนการเพิม่ ถา ปญหาขนาดการรักษาอัตราการติดตอในทีส่ ดุ จํากัดการลดในอัตราของ cache miss นี่ เปนผลกระทบทีน่ า สังเกต Barnes’ เปนสถานทีต่ ดิ ตอทีพ่ เิ ศษสุดจากการนํามาของอัตรา misses ความสํ าคัญของผลกระทบเปนการชั่วคราวในขีดความสามารถนั้นก็จะเกิดขึ้น เพื่อเปนการประยุกตเศษสวนของขอมูลของมันใน cache แตสญ ั ลักษณบางสวนของขอ มูลไมสามารถทีจ่ ะเจาะจง cacahe หรือใน cache นัน้ เปนขนาดใหญ LU จะเปน cache ที่ เล็กมาก (ประมาณ 4KB) สามารถทีจ่ ะจับเขาคูก นั ไดของ 16 * 16 block ใชเปนการจับใน ขาง loop : ถัดไปนันก็จะใหญจะสงเสริมในความสามารถทีเกิดขึน้ เมือ่ ทัค้ เู ปนบอเกิด ของการกําเนิด cache , ซึง่ เกิดขึน้ เมือ่ ผลรวมขนาดของ cache ซึง่ อยูใ นระหวาง 4MB and 8MB เปนจุดขอมูล เราจะเห็นไดตอไป นีเ่ ปนงานทีต่ ง้ั ขึน้ มาระหวาง 32 KB and 128KB เนือ้ ที่ FFT จะหยุด ณ ที่ 0.3% ถัดไปนั้นขนาดของ cache จะเร็วกวาลด ในความสามารถ ที่มองเห็นในโครงสรางทีเ่ ริม่ ขึน้ ทีอ่ าศัยอยูใ น cache Plateaus เปนทีร่ ว มกันใน โปรแกรมนั้นเปนจํานวนมากกันใหญ ในวิธที ข่ี องโครงสรางทีด่ ี การเพิ่มขนาดของ block เปฯทางเดียวทีเ่ ปลีย่ นอัตรา miss ใน cache ใน uniprocessor ,ขนาดของ block ทีใ่ หญเปน optimal กับ cache ทีใ่ หญกวาใน multiprocessor ,ผลกระทบอาจมีการแสดงการแบงขอมูลมีสง่ิ ทีเ่ กีย่ วกับบรยากาศทีต่ าใน ่ํ การแบง ความหมายก็คลายกับการแบงขอมูล, เปนทีน่ า พอใจที่ block ใหญกวาจะมีผล กระทบเล็กนอยกวาใน uniprocessorเ พราะวาสิง่ ทีค่ อ นขางจะเปนไปได เปนสูงกวา block จะหาหนาที่แทน จากทัง้ หมดและจะอางอิงการบรรจุ

ภาพที่ 8.15 แสดงถึง miss rates การเพิ่มของขนาดของ block เพือ่ ทีจ่ ะ 16processor run กับ a64-KB cache Barnes ทําสิง่ ทีน่ า สนใจในการหฏิบตั ิ ที่ miss rate ได เริ่มเสือ่ มและเมือ่ สิง่ ทีก่ าหนดได ํ ปรากฏขึ้น การเพิม่ ตัวเลขของการติดตอ misses ซึ่ง ปญหาก็เกิดขึ้นเพราะวา การแบงทีผ่ ดิ ในขณะที่ benchmarks, เพิ่ม block size ลดทุก อยาง miss rate Ocean and LU , block size ผลกระทบตอการเพิม่ ทัง้ คูก ารติดตอและ ความสามารถ miss rate FFT เปนการติดตอ miss rate คือซึง่ เปนอยูใ นเวลานีจ้ ะสดทีเ่ ร็ว กวา อัตราความสามารถของ miss rate นีเ่ ปนเพราะวาการติดตอใน FFT เปนโครงสรางที่ ไดผลตามตองการ โปรแกรมทีไ่ ดผลก็ลดลง เราจะคาดหวังวาการแบงทีผ่ ดิ และลดระยะ บรรยากาศของขอมูล ผลลัพธกจ็ ะเปนไปตามกําหนดของ Barnes ถึงแมวา จะหยุด miss rate กับความยาวของ blocks ความเชื่อที่จะนํานั้นจะใช block size ทีย่ ากกวา block size ทีด่ ที ส่ี ดุ ,สิง่ ทีเ่ ปนคอขวดใน bus-based multiprocessors เปนความจํากันความจํา และ bus bandwidth blocks ใหญมคี วามหมายกวา byte บน bus ตอ miss ดังภาพที่ 8.16 แสดงถึงการเติบโตในการติด bus ในการเพิม่ block size การเติบ โตเปนลําดับในโปรแกรมนัน้ มีความสุขของ miss rate พิเศษสุด Ocean การเติบโตใน traffic สามารถจะนําประสิทธิภาพในเวลานี้ กําหนดทั้งคูใหยาวและเพิ่ม bus ไวบรรจุอกี Performance of the Multiprogramming and OS Workload ใน Subsection เราทดสอบประสิทธิภาพ cache ของ multiprogammed workload ขนาดของ cache และขนาดของ block เปนการเปลีย่ นแปลง workload ยังคางอยูเ ชนกัน ในรายละเอียดตอไป : ทั้งสองเสมอภาคกัน แตละอันใชเพิ่ม 8 processor เพราะของความ จํา , ตลอดนัน้ user Processor จะทําทํากวาจะได 8 ครั้งที่แนะนํา , ดังนัน้ miss rate ทัง้ หมดเปนตัวกําหนด เบือ้ งตนโดย miss rate ใน user code, ซึง่ เราอาจจะเห็นเปน 1-5 ของ kernel miss rate ภาพที่ 8.17 จะแสดงถึงขอมูล miss rate กับขอมูล cache size เพือ่ ทีจ่ ะ kernel และเปนสวนประกอบของ user misses สามารถทีจ่ ะเปนสัญลักษณได. สําหรับ Workload ทีพ่ ฤติกรรมของ Operating System มีความซับซอนมากกวา

การดําเนินงานของผูใช มีอยูส องเหตุผล เหตุผลขอแรก kernel จะเริม่ ตัง้ หนาทัง้ หมด กอนที่พวกเขาจะขอพื้นที่ใหผูใช ซึง่ สิง่ ไหนทีส่ ําคัญตองบังคับการขยายสวนประกอบ ของ miss rate ของ kernel เหตุผลทีส่ อง kernel ตองแบงขอมูลอยางแทจริงและเหตุน้ี จึงมีความสําคัญเกีย่ วพันกับ miss rate ในการเปรียบเทียบการดําเนินงานของผูใชจะมี สาเหตุในการผิดพลาดเมือ่ การดําเนินงานมีแผน processor ทีต่ า งกัน สวนประกอบของ miss rate จึงมีขนาดเล็ก จากรูป 8.18 เปนการแสดง kernel miss rate ทีข่ ยายขนาด ของ cache

จากรูป 8.18 สวนประกอบของขอมูล kernel miss rate เปลีย่ นขอมูลขนาด cache ให ขยายขึ้นจาก 32 KB เปน 256 KB compulsory miss rate เปนสวนประกอบทีม่ อี ยู แนนอน ตัง้ แตมนั ไมมผี ลกระทบจากขนาดของ cache ความจุของสวนประกอบจะลดลง มากกวาสาเหตุที่สอง ขณะทีค่ วามเกีย่ วพันของสวนประกอบใกลเคียงสองเทาการขยาย ไมถกู ตองกับขนาดของ cache ตัง้ แตการนําเขามาทีน่ อ ยมากในการ bump ตามสมควร ให capacity ในการเพิ่มขนาดของ block จะชอบมีผลประโยชนสาหรั ํ บ workload มากกวา สําหรับ program workload แบบเดียวกับของเรา ตัง้ แตสว นยอยทีใ่ หญกวาของความ ผิดพลาดที่เกิดขึ้นจาก compulsory และ capacity ทั้งสองสิง่ นีส้ ามารถใชใหเปน ประโยชนอยางมากมายไดกบั ขนาดของ block ทีใ่ หญ ตัง้ แต coherence ผิดพลาดโดย เปรียบเทียบสิง่ ทีห่ ายาก ผลกระทบทางไมดขี องการขยายขนาดของ block คือจะเล็ก จากรูป 8.19 แสดง miss rate สําหรับ kernel และผูใ ชทอ่ี า งถึงการเปลีย่ นขยายขนาด ของ block โดยทําเปน 32 KB two-way set-associative data cache จากรูป 8.20

ยืนยันสิง่ นัน้ สําหรับการอางถึง kernel การปรับปรุงใหดขี น้ึ ใหญทส่ี ดุ คือการลด compulsory miss rate เหมือนกันกับใน program workload แบบเดียวกันจะไมมกี าร เพิ่มขนาดใหญใน coherence miss rate เหมือนการเพิ่มขนาด block แสดงวาผล กระทบในการแบงผิดนั้นไมสาคั ํ ญ

จากรูป 8.19 miss rate มีการลดลงอยางสมําเสมอเหมื ่ อนกับการเพิ่มขนาดของ block สําหรับ 32 KB two-way set-associative data cache เหมือนกับพวกเราสามารถคาด หวังรากฐานบนสวนประกอบ compulsory ทีส่ งู กวาใน kernel การปรับปรุงใหดขี น้ึ ใน miss rate จะสําหรับการอางถึง kernel ทีใ่ หญกวา ( เกือบจะ 1 ใน 4 ของ factor สําหรับการอางถึง kernel จาก 16-byte ถึง 128-byte blocks กับ 1 ใน 3 factor สําหรับการอางถึงผูใช ) ถาพวกเราพิจารณาตัวเลขของ bytes ที่ตอ งการตอการอางถึงขอมูลเหมือนกับใน รูป 8.21 พวกเราจะเห็นพฤติกรรมของ multiprogramming workload ทีเ่ หมือนกับ สิง่ นัน้ ของ program ใน program workload แบบเดียวกัน kernel มีอตั ราสวนทีส่ งู กวาขนาดของ block ทั้งทีก่ ารลดเปนสิง่ สําคัญในการผิดพลาดของ compulsory การ ลดทีเ่ ล็กกวาใน capacity และ coharence ขยาย drive ผิดพลาดในผลรวมทางการคา ผูใช programมีอตั ราสวนการคาทีเ่ ล็กกวาสิง่ นัน้ จะเลิกชามาก

สําหรับ multiprogram workload OS เปนสิง่ ทีผ่ ใู ชตอ งการมากของระบบหนวย ความจํา ถา OS มากหรือ OS-like มีการเคลือ่ นไหว รวมทัง้ ใน workload มันจะเปน การยากมากในการสามารถสรางระบบหนวยความจําอยางเพียงพอ

จากรูป 8.20 เหมือนทีพ่ วกเราคาดหวัง การเพิ่มขนาดของ block ลดลงอยางแทจริงที่ compulsary miss rate ในการอางถึง kernel มันมีความสําคัญตอผลกระทบบน capacity miss rate นอยลงโดย factor ของ 2.4 มากกวาการจัดเรียงขนาดของ block การขยายขนาดของ block มีการลดลงใน coherence miss rate ในบรรทัด 128-byte เพราะการลดไมสาคั ํ ญใน coherence miss rate เหมือนการเพิ่มขนาดของ block สวน ยอยของ miss rate จะเริม่ coherence จาก 7% ถึง 15% SUMMARY : PERFORMANCE OF SNOOPING CACHE SCHEMES ในสวนนีพ้ วกเราจะยกตัวอยางประสิทธิภาพ cache ของสองโปรแกรมทีเ่ ปนแบบเดียว กันและ multiprogram workload พวกเราจะเห็นสิง่ ที่ coherence traffic นัน้ สามารถ ทําพฤติกรรมใหมเขามาในระบบหนวยความจํา สิง่ นีไ้ มตอบสนองงายๆเหมือนการ เปลีย่ นใน cache size หรือ block size สิ่งนีเ้ ปนสิง่ พืน้ ฐานทีใ่ ชในการปรับปรุง ประสิทธิภาพ uniprocessor cache ใหดีขึ้น coherence สําคัญแตสว นประกอบไม คลาดเคลือ่ นในการดําเนินงานของ workload เดียวกันพวกเราสามารถคาดหวัง อยางไร ก็ดสี ง่ิ ที่ coherence ขอรองสําคัญมากใน program แบบเดียวกัน สิง่ นีจ้ ะมองในแงดี นอย

ใน multiprogram workload ผูใชและสวนที่ OS กระทํามันตางกันมาก แมวาจะ ไมมี coherence traffic ทีส่ าคั ํ ญ ในสวนของ OS compulsory และ capacity จะ บริจาค miss rate ทีใ่ หญกวา ทีส่ าคั ํ ญ miss rate ทั่วไปคือสิง่ ทีพ่ อจะเปรียบกันไดกบั โปรแกรมทีแ่ ยทส่ี ดุ ใน program workload เดียวกัน ผูใช cache ทีม่ ปี ระสิทธิภาพบน ความชํานาญจะดีมากและเปรียบเทียบโปรแกรมทีด่ ที ส่ี ดุ ใน program workload เดียว กัน คําตอบของ cache miss rate ที่มีผลกระทบขึน้ อยูก บั ประสิทธิภาพของ CPU บน ที่พกั ของระบบหนวยความจํา รวมทัง้ latency และ bandwidth ของ bus และ memory พวกเราจะยอนประสิทธิภาพโดยทัว่ ไปในสวน 8.8 เมือ่ พวกเราตรวจสอบการ ออกแบบของ multiprocessor ทีท่ า ทาย

จากรูป 8.21 ตัวเลขของ bytes ที่ตอ งการตอการอางถึงขอมูลเหมือนการเพิม่ ขนาดของ block สําหรับทัง้ สอง kernel และสวนประกอบของผูใ ช มันนาสนใจในการเปรียบเทียบ สิง่ นี้ chart ตอกับ chart ที่เหมือนกันสําหรับโปรแกรม workload แบบเดียวกันที่ แสดงในรูป 8.16 DISTRIBUTED SHARED – MEMORY ARCHITECTURES เครือ่ งวัดทีส่ นับสนุนการแบง memory ที่สามารถหายไปในการขัดของหรือรวมทัง้ cache coherence ในขั้นพื้นฐานที่สุด แผนการสําหรับ hardware ที่ cache coherence ขัดของ focus แทนการวัดระบบหนวยความจํา หลายบริษทั ทีม่ กี ารสรางเครือ่ งลักษณะ นี้ Cray T3D ในตัวอยาง one well-known ในเครือ่ ง memory คือการแจกจาย

ระหวาง node และ node ทั้งหมดทีเ่ กีย่ วของกันโดย network การเขาถึงสามารถจะ เปน local หรือ remote memory เขาถึงขอมูล สิง่ นัน้ ระบบนีม้ ี cache แตหยุดยัง้ ปญหา coherence ในการแบงขอมูลคือ เครือ่ งหมายเหมือน uncacheable และขอมูลสวนตัวเก็บใน cache แนนอน software สามารถทําให cache ชัดเจน ประโยชนของการแบงขอมูลโดยการ copy ขอมูลจาก สวนแบงของ address วางในสวนของ local สวนตัวของ address วางสิ่งนั้นคือ cache coherence ควบคุมโดย software ผลดีของเครือ่ งคือสนับสนุน hardware ตัว เล็กทีต่ อ งการ แมวา การสนับสนุนสําหรับลักษณะเชนการ copy block อาจจะมี ประโยชน ตัง้ แต remote เขาถึง fetch ใน word เดียว ( หรือ word คู ) คอนขางกวา cache blocks หลายสาขาทีม่ ผี ลเสียในการเขาถึง อยางแรก compiler คือกลไกสําหรับการ เปดเผย software cache coherence ทีจ่ ากั ํ ดมาก techniques ในปจจุบนั โปรแกรม ประยุกตยงั คงอยูก บั well-structure loop-level แบบเดียวกันและ techniques มีสง่ิ ที่ เกิดขึน้ ทีส่ าคั ํ ญรวมอยูจ ากการ copy ขอมูลอยางเปดเผย สําหรับปญหาทีผ่ ดิ ปกติหรือ ปญหาเกีย่ วกับโครงสรางขอมูล dynamic และ pointers ( รวมทัง้ operating system สําหรับตัวอยาง ) compiler เปน software พืน้ ฐานของ cache coherence ในปจจุบนั ไมมปี ระโยชน พื้นฐานที่ยากคือพื้นฐาน software ของ algorithm ทีเ่ กีย่ วพันกันตอง รักษาแบบแผนทุกๆ block สามารถทีจ่ ะแบงตองพิจารณาถามันแบงสิง่ นีค้ อื ผลลัพธใน coherence overhead ทีม่ ากกวาปกติ เพราะ compiler ไมสามารถบอกลวงหนาเกีย่ ว กับการแบงที่เปนจริงอยางถูกตองแมนยํา ความยุง ยากซับซอนของปญหาทีม่ ผี ลกระทบ เกิดแกกนั ถาม programmer ถึงปริมาณทีเ่ กีย่ วกับการที่ coherence ไมทางาน ํ อยางทีส่ องไมมี cache coherence เครือ่ งจะหายในสวนทีส่ ําคัญของ fetch และ ใช multiple words ใน cache block เดียวสําหรับปดกอใหเกิด fetch หนึง่ word benefit ของ locality ทีม่ ที ว่ี า งมากในการแบงขอมูลไมสามารถ levelage เมือ่ word ตัวเดียว fetch จาก remote memory สําหรับการอางถึงแตละอันสนับสนุนสําหรับ เครือ่ ง DMA ระหวาง memory สามารถชวยได แตเชนเครือ่ งกอใหเกิดสิง่ ใดสิง่ หนึง่ บอยในการใช ( ตัง้ แตพวกเขาตองการแทรกแซง OS ) หรือเครือ่ งมือแพงตัง้ แต

special-purpose สนับสนุน hardware และ buffer ตองการ นอกจากนีพ้ วกเขามี primarily ทีเ่ ปนประโยชน เมือ่ copy block ขนาดใหญทต่ี อ งการ ( เห็นรูป 7.25 เปน การ copy บน Cray T3D block ) อยางทีส่ าม เครือ่ งสําหรับ latency ทีม่ คี วามทน prefetch จะใชประโยชนได มากกวา เมื่อพวกเขาสามารถ fetch multiple word เชน cache block และขอมูล fetch ยังคงเหลือ coherent อยู พวกเราจะทดสอบความสําคัญในรายละเอียดทีช่ า กวา สิ่งเหลานีผ้ ทู ําการขยายจะมีขอ เสียเปรียบโดย latency ทีใ่ หญของการเขาถึง memory ที่ ไมเปนมิตรเทียบกับ local cache สําหรับตัวอยาง บน Cray T3D local cache มีการเขาถึง latency ของ 2 cycles และ pipeline ขณะที่ remote เขาถึง 150 cycles สําหรับเหตุผลเหลานี้ cache coherence จะยอมรับความตองการใน small – scale multiprocessors สําหรับ larger – scale arch: tectures ทีน่ น่ั มีการทาทายใหมๆในการขยาย cache – coherent shared – memory model ออก แมวา bus สามารถแทนทีไ่ ดอยางแนนอนกับ ความสัมพันธของ network ทีส่ ามารถวัดไดและพวกเราสามารถแบงสรร memory หนวย ความจํา bandwidth สามารถวัดดวย lack ของการวัดของsnooping coherence ทีต่ อ งการ แบบแผนของ address snooping protocal ตองการสือ่ สารกับ cache ทัง้ หมด ทุกๆความผิดพลาดของ cache รวมทั้งการเขียนของการแบงขอมูลมากมาย การไมมศี นู ยกลางโครงสรางขอมูล กลาวถึงแถบเสียงของ cache เปนผลประโยชนสาคั ํ ญของ snooping – based scheme ตัง้ แตมนั ไมยอมรับมันไมชดั เจน เหมือนจะดีกบั มันเมือ่ มันสามารถวัดได สําหรับตัวอยาง 16 processors และขนาด block ของ block ของ 64 byte และขอมูล cache 64-KB ผลรวมของ bus bandwidth demand สําหรับสีโ่ ปรแกรมชนิดเดียวกันใน workload ลําดับจากเกือบทัง้ หมด 500 MB/SEC ( สําหรับ Barnes ) ถึงมากกวา 9400 MB/SEC ( สําหรับ OCEAN ) การสมมติ processor จะสงขอมูลอางถึงทุกๆ 5 ns สิง่ ไหนที่ 1995 superscalar processor มีกําลังในการผลิต ในการเปรียบเทียบ Silicon Graphics Challenge bus Bandwidth bus-base multiprocessor ทีส่ งู ทีส่ ุดใน 1995 จัด 1200 MB ของ bandwidth แมวาขนาดของ cache ที่ใชในการเลียนแบบจึงมีขนาดเล็ก ดังนัน้ ขนาดจึงมีปญ  หา นอกจากนีแ้ มวา cache ทีใ่ หญกวาจะลดสวนประกอบ uniprocessor

ของ traffic พวกเขาจะไมทาให ํ ความสําคัญนัน้ เปลีย่ นไปสําหรับสวนประกอบแบบ เดียวกันของ miss rate โดยมีตวั เลือกพวกเราสามารถสราง scalable shared-memory architectures รวม ทัง้ cache coherency Keyที่จะพบโดยมีตวั เลือก coherence protocol หนึง่ ในทาง เลือก protocol คือ directory protocol ใน directory จะเก็บการชีแ้ จงของทุกๆ block อาจจะเปน cache ขอมูลใน directory รวมทัง้ cache จะมีการ copy block ถาอัน ไหนมันสกปรกและอืน่ ๆอีก เกีย่ วกับการมีอยูข อง directory การเขาไปดําเนินการเกีย่ วของใน directory กับ หนวยความจํา block ในแตละอัน ในชนิดของ protocol ปริมาณทีเ่ หมาะสมของขอมูล ทีเ่ หมาะสม การผลิตตัวเลขของ memory block และตัวเลขของ processor สิง่ นั้นไมมี ปญหาสําหรับเครือ่ งทีน่ อ ยกวา 100 processors เพราะ directory ขางบนยังพอไปได สําหรับเครือ่ งทีใ่ หญกวาพวกเราตองมีวธิ กี ารใหโครงสราง directory มีการวัดอยางมี ประสิทธิภาพ วิธกี ารทีม่ สี ง่ิ ใดสิง่ หนึง่ พยายามเสนอในการเก็บขอมูลสําหรับ block จํานวนนอยๆ ( e.g. เพียงแตสง่ิ โนนใน cache คอนขางจะมากกวา memory block ทัง้ หมด ) หรือพยายามเก็บ bit นอยๆตอการนําเขา ปองกัน directory จากอุปสรรค การนํา directory เขามาสามารถแจกจายไปตาม memory เพื่อวา directory ที่มีการเขาถึงตางกันจะสามารถไปยังสถานทีท่ ต่ี า งกัน ใกล เคียงกัน memory ทีต่ า งกันจะขอรองไปยัง memory ทีต่ า งกัน directory ทีแ่ จกจายจะ บงบอกลักษณะทีเ่ หลือเอาไว ในการแบงสถานะของ block คือทุกๆอันในสถานทีเ่ ดียว กัน ความเปนเจาของทีย่ อมให coherence protocol หลีกเลีย่ ง broadcast จากรูป 8.22 จะแสดงการแบงสรรเครือ่ ง memory กับ directory เพิ่มแตละ node DIRECTORY – BASED CACHE – COHERENCE PROTOCOL: THE BASICS ใกลเคียงกันกับ snooping protocol ทีน่ น่ั การดําเนินงาน 2 primary directory protocol ตองเปนอุปกรณ handling อานการผิดพลาดและ handling เขียนแบงและทําความ สะอาด cache block ( handling จะเขียนความผิดพลาดในการแบง block การรวมกัน แบบพื้นฐานของสองแหง การดําเนินการในการแกไข directory ตองวิง่ ในสถานะของ แตละ cache block ใน protocol พืน้ ฐาน สถานะสามารถตาม :

- shared หนึง่ หรือมากกวาของ processor มี block cache และประโยชนในหนวย ความจํา ( เหมือนจะดีกบั cache ทัง้ หมด ) - Uncached processor ไมมีการ copy ของ cache block

จากรูป 8.22 directory จะเพิ่มคาในแตละ node ของการดําเนินการ cache coherence ในเครือ่ งจาย memory แตละ directory จะมีตอบสนองสําหรับแถบเสียงของ cache จะแบง memory address ของ port ของหนวยความจําใน node directory อาจสื่อสาร กับ processor และ memory ระหวาง bus รวมกัน ในขณะที่แสดงหรือมันอาจมี port ที่แยกออกมาของ memory หรือมันอาจจะทําหนาที่ของ node ที่อยูต รงกลางควบคุม ผานเขาไป internode และ intranode ทัง้ หมดสือ่ สารผาน - Exclusive อยางถูกตอง processor อันหนึง่ มีการ copy ของ cache block และมัน มีการเขียน block ดังนัน้ memory จะ copy สิง่ ทีล่ า สมัย processor จะเรียกเจา ของของ block ในการเพิม่ track จะชี้แจงแตละ cache block พวกเราตอง track processor โดยมีการ copy block เมือ่ มันแบงตัง้ แตพวกเขาตองแสดงวาไมถกู ตอง ทางพื้นฐานที่ สุดจะทําการเก็บ bit vector สําหรับแตละ memory block เมือ่ block แบงแตละ bit ของ vector จะแสดงอันใดอันหนึง่ ที่ processor มีการ copy block ทีต่ รงกัน พวกเรา สามารถใช bit vector ในการเก็บ track ดวยสถานะของแตละ cache block ที่ cache เฉพาะ

สถานะและการเปลีย่ นแปลงสําหรับสถานะเครือ่ งของแตละ cache ทีเ่ หมือนกัน อะไรที่เราใชสาหรั ํ บ snooping cache แมวา การกระทําของการเปลีย่ นแปลงแตกตาง กันเล็กนอย พวกเราจะทําสมมติฐานทีท่ าให ํ งา ยเหมือนกัน พวกเราจะทําใน case ของ snooping cache ความพยายามในการเขียนขอมูลสิ่งนั้นไมใชสิ่งเฉพาะตัว ในการเขียน ของ cache ทุกๆการผลิตจะเขียนขอผิดพลาดและ processor block เกือบจะเขาถึง อยางสมบูรณ ตัง้ แต interconnect ไมยาวไปกวา bus และพวกเราตองการหลีกเลีย่ ง broadcast ทีน่ น่ั มีสองความซับซอนทีเ่ พิม่ เติมมา อันแรกเราไมสามารถใช interconnect เหมือนกับ point ของ arbitration function กระทํา bus ใน snooping case อันที่ สอง เพราะ interconnect เปน message oriented ( ไมเหมือน bus ทีเ่ ปน transaction orient ) ขอความจํานวนมากจะตองมีการตอบสนองทีช่ ดั เจน กอนทีพ่ วกเราจะเห็น protocol state diagram มันมีประโยชนในการทดสอบ รายการสินคาของชนิดของขอความอาจจะสงระหวาง processor และ directory จากรูป 8.23 จะแสดงชนิดของขอความที่สงระหวาง node local node คือ node ทีเ่ กิดจาก การขอรอง home node คือ node ทีเ่ ปนสถานทีข่ อง memory และการนํา directory เขาของ address ทีพ่ กั อยู ทีอ่ ยูท ว่ี า งของ physical คือการดําเนินการแบบ statically ดังนัน้ node จะประกอบไปดวย memory และ directory สําหรับทีอ่ ยูข อง physical สําหรับตัวอยาง high-order bit อาจจัดเลข node ขณะที่ low-order bit จัด offset ทีม่ ี ใหกบั ใน memory บน node remote node คือ node ทีม่ กี าร copy ของ cache block ไมวา เฉพาะตัวหรือ แบงกัน local node อาจจะเหมือนกันกับ home node และ vice versa ในสิ่งใดสิ่ง หนึง่ case protocol จะเหมือนกัน แมวาขอความ internode จะสามารถแทนทีโ่ ดยการ ดําเนินการของ intranode จะเร็วกวา

จากรูป 8.23 ขอความที่เปนไปไดสงระหวาง node กับ maintain coherence สองขอ ความแรก ขอรองขอผิดพลาดสง local cache ไปที่ home อันที่สามผานเขาไปที่ขอ ความที่หาสง remote cache โดย home เมือ่ home ตองการขอมูลทีเ่ ปนไปตามการ อานหรือเขียนขอผิดพลาด ขอมูลทีเ่ ปนประโยชนในการโตตอบคือใชสง คาจาก home node กลับมาที่ requesting node คาขอมูลทีเ่ ขียนกลับจะเกิดสําหรับสองเหตุผล เมือ่ block แทนทีใ่ น cache และตองเขียนกลับมาที่ home memory และเหมือนในการ โตตอบ fetch หรือ fetch/invalidate message จาก home เขียนคาขอมูลกลับ เมือ่ ไรก็ ตามที่ block เปนการแบงงายๆทีต่ วั เลขของสถานะใน protocol ตัง้ แต dirty block ตอง exclusive และแบง block ทุกๆอันทีม่ อี ยูใ น home memory ในสวนทีเ่ ราสมมติ model แบบพืน้ ฐานของหนวยความจําสมําเสมอ ่ ไมเห็นความสําคัญในชนิดของขอ ความและความซับซอนของ protocol พวกเราทําสมมติฐานในความรับขอความและ การกระทําเกีย่ วกับในลําดับทีเ่ หมือนกัน พวกเขาจะสงหลักการอาจจะไมถกู ในการ ปฏิบตั แิ ละสามารถมีผลในการเพิม่ ความยุง ยากเล็กนอยของ address ของพวกเราใน สวน 8.6 เมือ่ เราปรึกษาหนวยความจําสมําเสมอของ ่ model ในสวนทีเ่ ราใชสมมติ รับรองการสงทีไ่ มถกู ตองโดย processor AN EXAMPLE DIRECTORY PROTOCOL สถานะพื้นฐานของ cache block ใน directory-base protocol อยางแนนอน เหมือนสิง่ เหลานัน้ ใน snooping protocol และสถานะใน directory เหมือนทํานอง เดียวกันกับสิง่ เหลานัน้ เราแสดงงายกวา ดวยเหตุนเ้ี ราจึงสามารถเริม่ ตนกับ state diagram แบบพื้นฐาน สิง่ นีแ้ สดงถึงการเปลีย่ นแปลงสําหรับ cache block สวนตัวและ การทดลอง state diagram สําหรับการนํา directory เขามาอยางเหมาะสมของแตละ block ใน memory เหมือนใน snooping case สถานะการเปลีย่ นแปลง diagram ไม ไดแสดงรายละเอียดทัง้ หมดของ coherence protocol อยางไรก็ดกี ารควบคุมทีแ่ ทจริง จะสูงขึน้ อยูก บั ตัวเลขของรายละเอียดของเครือ่ ง ( ขอความบริการความเปนเจาของ โครงสราง buffer และอื่นๆ ) ในสวนที่พวกเราเสนอพื้นฐาน protocol state diagram ความยุงยากทีส่ ง เหตุใหยงุ ยากในการปฏิบตั กิ าร การเปลีย่ นแปลงสถานะ diagram เปน การทดลองในภาคผนวก E ตามไปกับปญหาทีค่ ลายคลึงกันสําหรับ snooping cache

จากรูป 8.24 แสดงการกระทําของ protocol ขณะที่ cache สวนตัวตอบสนอง พวกเราใชเครือ่ งหมายทีเ่ หมือนกันในสวนถัดไปกับการขอรองมาจากภายนอก node ใน gray และการกระทําใน bold การเปลีย่ นสถานะสําหรับ cache สวนตัวมีเหตุผล โดยอานขอผิดพลาด , เขียนขอผิดพลาด , ไมถูกตองและการ fetch ขอมูล กระบวนการ เหลานีจ้ ะแสดงทัง้ หมดในรูป 8.24 cache สวนตัวผลิตการอานและเขียนขอความ ผิดพลาดโดยจะสงไปยัง home directory อานและเขียนขอผิดพลาดตอบสนองคาของ ขอมูลทีต่ อ งการและสิง่ เหลานีจ้ ะคอยผลสําหรับการตอบสนองกอนการเปลีย่ นสถานะ การดําเนินงานของการเปลีย่ นสถานะ diagram สําหรับ cache block ในรูป 8.24 เหมือนกันอยางขาดไมไดที่มันจะใชสาหรั ํ บ snooping case สถานะทีเ่ หมือนกันทุก ประการและสิง่ ทีก่ ระตุน เกือบจะเหมือนกันหมด เขียนขอผิดพลาดในการดําเนินงาน การกระจายเสียงบน bus ใน snooping scheme คือการแทนทีโ่ ดย fetch ขอมูลและ การดําเนินการทีไ่ มถกู ตองทีส่ ามารถเลือกสงได โดยการควบคุม directory เหมือน snooping protocol cache block ตองอยูใ นสถานะเฉพาะตัวเมือ่ มันเขียน และการแบง block บางอันตองขึน้ อยูก บั วันทีใ่ น memory ใน directory-base protocol directory จะปฏิบตั คิ รึง่ อืน่ ๆของ coherence protocol ขอความทีส่ ง ถึง directory มีเหตุผลสองชนิดทีแ่ ตกตางกันของการกระทํา : การ update สถานะของ directory และสงขอความเพิม่ ถึงความพอใจในการขอรอง สถานะใน directory แสดงสามสถานะสําหรับ block แตสาหรั ํ บ cache copies ของ memory block คอนขางจะมากกวาสําหรับ cache block memory block อาจจะ uncache โดย node บางอัน cache ใน node หลายๆเทาและการอาน ( การแบง ) หรือ cache เฉพาะและเขียนอยางถูกตอง

จากรูป 8.24 เปนการเปลีย่ นสถานะ diagram สําหรับ cache block สวนตัวใน directory-base system หนึง่ node ในการเพิ่มสถานะของแตละ block directory ตอง set processor ที่ มีการ copy ของ block เราใชการ set เรียกผูแ บงถึงการกระทําของ function ใน เครือ่ งวัดขนาดเล็ก ( <= 128 nodes ) set ชนิดเก็บที่ bit vector ในเครือ่ งทีใ่ หญกวา , techniques อื่นๆ พวกเราจะตอบในแบบฝกหัดทีต่ อ งการ จากรูป 8.25 แสดงการกระทําที่ directory ใน การตอบสนองการรับขอมูล directory จะรับสามความแตกตางทีข่ อรอง : อานขอผิดพลาด , เขียนขอผิดพลาด ,

จากรูป 8.25 เปนการเปลีย่ นแปลงสถานะ diagram สําหรับ directory ทีม่ สี ถานะ เหมือนกันและโครงสรางการเปลีย่ นแปลง diagram สําหรับ cache สวนตัว และการเขียนขอมูลกลับ ขอความทีส่ ง ในการตอบสนองโดย directory แสดงใน italics ขณะทีก่ าร update ของการตั้งคาผูใชที่แสดงใน bold italics เพราะการกระตุน ขอความทัง้ หมดเปนการกระตุน ภายนอก การกระทําทั้งหมดจะแสดงใน gray การเขาใจการดําเนินงานของ directory การทดสอบยอมรับการขอรองและการ กระทําของสถานะโดยสถานะ เมือ่ block ในสถานะ uncache copy ใน memory ทีม่ ี คาปจจุบนั ดังนัน้ ปญหาการขอรองสําหรับ block คือ - Read miss การขอรอง processor ทีส่ ง ขอมูลทีข่ อรองจาก memory และ ผูขอรองใน การทําการแบง node สถานะของ block จะทําการแบง Write miss: สิง่ ที่ processor ตองการคือการสงคาและกลายมาเปนการรวม node block คือ การทําใหเห็นถึงลักษณะเฉพาะ มันเปนเพียงการ copy ของ cache มันจะแสดงการรวมความโดดเดนของ owner เมือ่ อยูใ น block คือการกลาวรวมกับคาของ memory จะเพิ่มขึ้น ดัง นั้นจะมีสามารถ 2 อยางทีเ่ ราตองการ Read miss: สิง่ ที่ processor ตองการคือความตองการทีจ่ ะสงขอมูลจาก memory และ สิง่ ที่ processor ตองการคือ เพิม่ การรวมคาทีต่ ง้ั ขึน้ Write miss: สิง่ ที่ processes ตองการคือ การสงคาซึ่ง processes ทัง้ หมดในกา set มันจะรวมการสงขาวสารทีเ่ ปน invalidate และการรวม set คือประกอบไปดวยความโดดเดน ของความตองการของ processor state ของ block คือการทําโดยเฉพาะ เมือ่ อยูใ น block คือในความเฉพาะของ state ของคาของกระแสของ block คือ การเขาใน cache ของความโดดเดนของ processor โดยการ set shares (the owner) ดังนัน้ มี ความตองการ 3 อยางของ directory Read miss: owner processor คือการแทนทีข่ อง block และดังนัน้ มันจะตองเขียนกลับ ไป ตองทําใหการ copy ของ memory พัฒนาขึ้น(directory ที่จริงจะกลายเปน owner) block คือ now uncache แบะ sharer set จะวาง Write miss: ใน block จะมี owner ทีใ่ หมขาวสารคือ การสง old owner เปนสาเหตุ ในการสงคาของ cache ของ directory ของ block ซึง่ มันจะสงความตองการของ processor สิ่งซึง่ กลายมาเปน new owner การ shares คือการ set ความโดดเดนของ new owner และ

state ของ block ทีย่ งั คงความเฉพาะตัวนี้ การเปลีย่ นแปลงของ state ในรูป 8.25 คือการทําให งายมันจะอยูใ นกรณีของ snooping cache ในกรณีของ directory มันจะมีความงายมาก ตัง้ แต การตัง้ สมมุตฐิ านนัน้ bus transactions จะมีการประยุกต atomic ทีไ่ มยาวในอีกทางหนึง่ directory protocol จะใชอปุ กรณทด่ี ซี ง่ึ เปนการประกอบไปดวยประสิทธิภาพทีด่ ี โดยเฉพาะ block คือการสง directory แรกไปที่ home node จากนีม้ นั จะเก็บเขาไปที่ home memory และการตองการทีจ่ ะสง node แบบ original protocol ทั้งหลายในการกอใหเกิดอุปกรณทจ่ี ริง จากขอมูลของ node ไปยังความตองการของ node (ทางทีด่ จี ะแสดงการ write back ไปที่ home)ประสิทธิภาพไมรวมความยุง ยากของ protocol แตเขาทัง้ หลายจะเคลือ่ นไหวบอยๆ ทีม่ ี สวนประกอบมากมายจากการออกแบบของ one part Performance of Directory-Based Coherence Protocols ประสิทธิภาพของ directory-based machine จะขึน้ อยูก บั factor ทีเ่ หมือนกัน นัน่ จะ เปนอิทธิพลของประสิทธิภาพของ bus-based machines (เชน cache size, processor count และ block size) การกระจายทีด่ ขี อง miss ถึง location ไดหลากหลายในชั้นของ memory location ของขอมูลทีต่ อ งการ location ของขอมูลทีต่ อ งการซึง่ ขึน้ อยูก บั การแบง initial ของ ทั้งคูและรวมกันพูดคุยกัน เราจะเริม่ ตนโดยการตรวจสอบประสิทธิภาพพืน้ ฐานของ cache ของโปรแกรม workload ประเภทเดียวกันและเราจะมองเห็นปฎิกริ ยิ าของความแตกตางของ ชนิดของ miss เพราะวาอุปกรณคอื ใหญและมีศกั ยภาพทีย่ าวของ snooping ทีเ่ ปนพื้นฐานของ multiprocessor เราจะเริม่ ตนกับ cache ทีใ่ หญ(128 KB) และ block size ของ 64 byte ใน การแบงสถาปตยกรรมของ memory การแบงของ memory ตองการระหวาง local และ remote คือkey ของประสิทธิภาพเพราะวามันกระทบกับการ consumption ทัง้ คูข อง bandwidth ทีเ่ ขาใจงายและความตองการของ latency ทีเ่ ห็น สําหรับรูปนีเ้ ราแบง cache miss เขาไปใน local และความตองการของ remote ในรูปทีเ่ ห็นนีส้ ําหรับการประยุกตโดยมากของ remote miss นัน้ จะเกีย่ วกับ miss อยางไรก็ตาม capacity miss สามารถเปน remote ดวยและ มีการประยุกตกบั การแบงขอมูลทีน่ อ ย miss สามารถสังเกตได จากรูปที8่ .26 miss rate กับ cache size ไมมผี ลกระทบโดยการเปลีย่ นแปลงการนับ ของ processor กับขอยกเวนของ Ocean เปนทีซ่ ง่ึ มี miss rate ที่ 64 processor rise เกิด

ขึน้ เพราะวาแผนที่ของความขัดแยง ใน cache ที่เกิดขึน้ เมือ่ มันกลายเปน grid เล็กๆของ rise ใน local miss เพราะ rise ใน coherence miss สิง่ ซึง่ เปน remote ทัง้ หมด รูปที8่ .27 แสดงการเปลีย่ นแปลงของ miss rate การเพิ่มของ cache size 64 processor อยางไรก็ตามผลกระทบของ dampening โดยเล็กๆนอยหรือไมลดลงในผูน ําของ coherence miss ทีล่ ดลงใน remote miss ใน local miss โดยเวลาของเราไปยัง cache size ใหญๆ 512 KB remote miss rate คือ การเทากันหรือความใหญของ local miss rate ความใหญของ cache ควรจะดําเนินตอไปถึงแรงแนวโนมนาว ในที่สุดเราจะตรวจสอบผลกระทบการเปลีย่ นของ block size ในรูป 8.25 เพราะวามี การประยุกตทม่ี พี น้ื วางทีด่ ี เพิ่มขึ้นใน block size ของ miss rate สําหรับ block ทีใ่ หญ อยางไรก็ตามประสิทธิภาพของความไดความชวยเหลือของ block ใหญและ block เล็ก โดย เฉพาะอยางยิง่ โดยมากของการปรับปรุงใน miss rate มาใน local miss การเดินทางของ memory ทีว่ าง รูปที่ 8.25 ตัวเลขของขอคิด ของความตองการของ byte โดยการอางถึงขอมูลของดูของ block size ความตองการของการหยุดเขาไปถึง local และ global bandwidth ในกรณีของ bus เราสามารถเปนเพียงจํานวนทัง้ หมดทีต่ อ งการของ processor ไปหาผลรวมของความตองการสําหรับ bus และ memory bandwidth สําหรับตา รางทีเ่ กีย่ วของกัน เราสามารถใชขอมูลในรูป 8.29 ที่จะคํานวณความตองการของ per-node global bandwidth และการประมาณการแบงของ bandwidth ดูตวั อยางถัดไป

รูป 8.26 อัตราการหายไปของ data สวนใหญจะคงทีถ่ า processor ถูกเพิ่มเขาไป เนื่องจากมันเปนโครงสรางแบบตาราง สําหรับ Ocean ในตอนแรกจะมีการลดลงของ อัตราการหายไป ซึ่งเพิ่มขึ้นเมื่อมี 64 processor สําหรับ Ocean แลว local miss late จะลด ลงจาก 5 % ที่ 8 processor ไปเปน 2 % ที่ 32 processor กอนทีจ่ ะเพิม่ ขึน้ ไปเปน 4 % ที่ 64 processor สวน remote miss rate ใน Ocean ซึง่ สวนใหญเกิดจากการติดตอสือ่ สาร ซึ่ง remote miss rate จะเพิม่ ขึน้ อยางเดียว จาก 1 % ไปเปน 2.5 % สังเกตวาการแสดงราย ละเอียดของแตละยี่หอนั้น สเกลทีแ่ ตกตางกันจะถูกนํามาใชในแกน Y ทุกยีห่ อ ใช cache 128 KB ซึง่ เปน two-way set associative และ 64 - byte block Remote miss รวมถึง misses ใด ๆ ก็ตามทีต่ อ งการติดตอกับ node อืน่ ๆ ไมวา จะเปนการรับขอมูลหรือสง invalidate โดยเฉพาะในรูปนี้ และ data อืน่ ๆ ใน section นี้ การหาคาของ remote miss จะรวมการเขียนเพือ่ upgrade miss ซึ่ง data นีจ้ ะ up to date ที่ local memory แต cache ไม up to date ดังนัน้ มันตองการ การสง invalidation ซึ่ง invalidation เหลานี้ จะสราง remote traffic อาจจะทําหรืออาจจะไมทาให ํ การเขียนขอมูลซํา้ ขึน้ อยูก บั แตละ model

รูป 8.27 miss rate จะลดลง ถา cache เพิ่มขึ้น การลดลงอยางคงทีจ่ ะเห็นไดจากใน local mlss rate ในขณะที่ remote miss rate ลดลงอยางไมคงทีข่ น้ึ อยูก บั วา remote miss rate มีความจุมากหรือไมหรือปจจัยทีส่ าคั ํ ญของ remote miss rate คือ communication miss ในทุกกรณี การลดลงใน local miss rate จะมากกวาการลดลง ใน remote miss rate จากกราฟ miss rate ของ FFT ซึง่ จะกลาวถึงใน section สุด ทายนัน้ จะลดลงถา cache มากกวา 128KB ซึง่ ทํางานบน 64 processor และ 64 byte block

รูป 8.28 Data miss rate กับ block size โดยให cache เปน 128-KB และ และ 128 processor แมวา มันจะยากทีจ่ ะเขาใจ miss rate ใน Barnes มันเพิ่มขึ้นถา block size ขนาดใหญทส่ี ดุ ซึง่ จะกลาวถึงใน section สุดทาย ตัวอยาง สมมติวา มัลติ processor 64 procrssor แตละ processor มี 200MHZ สําหรับ 64 byte block size remote miss rate คือ 0.7% ใหหาตอ node และ ประมาณคา bandwidth สําหรับ FFT สมมติวา processor ไมมกี ารหนวงเวลา สําหรับการตองการ remote memory สิง่ เหลานีอ้ าจจะถูกถา remote data ทัง้ หมดถูก รับเราจะเปรียบเทียบความตองการ bandwidth กับ technology ตางทีม่ กี ารติดตอกันได อยางไร

รูป8.29 คํานวณของ Byte ตอ data reference เมือ่ block size เพิ่มขึ้น data เหลานี้ สามารถใชหาความตองการ bandwidth ตอ node ทัง้ ภายในและโดยรวม data นี้ สมมติวาใช 128KB cache สําหรับแตละ 64 processor คําตอบ Bandwidth ตอ node คือจํานวนของ data byte ตอ reference time reference rate คือ 0.77%*200*64 = 90 MB/sec อัตราทีไ่ ดนป้ี ระมาณครึง่ หนึง่ ของ bandwidth ทีเ่ ร็วทีส่ ดุ ของ MPP ทีม่ อี ยูใ นป 1995 bandwidth ของ FFT ตอ node ตองการใหเร็วกวา ATM ทีเ่ ร็วทีส่ ดุ ในป 1995 ประมาณ 5 เทาและเร็วกวา ATM รุนถัดไป FFT จะทําการติดตอกันทุกอยาง ดังนัน้ bandwidth จะเทากับ 32 ของ bandwidth ตอ node หรือประมาณ 2,880 MB/sec สําหรับเครือ่ งทีม่ ี 64 processor ที่จดั อยูใ นแบบ 20 mesh bandwidth จะมากขึน้ ตามสแควรูทของจํานวน processor ดังนัน้ สําหรับ 64 processor bandwidth จะเทากับ 8 เทาของ bandwidth ตอ node ในป 1995 MMP style ไดเสนอ bandwidth 200 MB/sec ในการติดตอไปยัง node เพื่อ ใหไดผลรวมเปน 1600 MB/sec สําหรับ 64 processor ทีเ่ ปน 3D จะมี bandwidth เปน 2

เทา คือ 3200 MB/sec ซึง่ เกินกวา bandwidth ทีต่ อ งการ สําหรับ 2D รุน ถัดไปก็ยงั ถูกคาด วาจะได bandwidth ตามทีต่ อ งการ ป 1995 ATM ทีม่ ี 64 x 64 crossbar จะมี bandwidth 1200 MB/sec และ ATM รุน ถัดไปก็จะมี bandwidth เปน 4 เทา ตัวอยางทีผ่ า นมา เนนไปยังความตองการ bandwidth สิง่ ทีส่ าคั ํ ญ อันอืน่ สําหรับ parallel program คือ เวลาทีใ่ ชในการเขาถึง remote memory การทีจ่ ะเขาใจสิง่ เหลานีเ้ รา จะใชตัวอยางงาย ๆ ของ directory-base macthine ดังรูปที่ 8.30 ไดแสดงถึงคาตาง ๆ ที่ เราสมมติสาหรั ํ บ simple machine สมมติวา เวลาทีค่ าแรก ํ จะเขาถึง memory คือ 25 รอบ และทางทีจ่ ะไปยัง local memory กวาง 8 byte ในขณะที่ การติดตอกันของ network กวาง 2 byte รูปแบบนีจ้ ะไมสนใจผลของ contention ซึง่ อาจจะไมรนุ แรงมากนัก ใน ระบบ parallel ที่เราทดสอบ กับขอยกเวนทีเ่ ปนไปไดของ FFT ซึง่ ใชตดิ ตอระหวางกัน ทัง้ หมด contention นีส้ ามารถทีจ่ ะมีผลตอประสิทธิภาพอยางรุนแรงในงานดานอืน่ ๆ

รูป 8.30 ลักษณะของ directory-base machine ตัวอยาง Misses สามารถเปนไปได ทั้งบริการเฉพาะที่ remote home node หรือใชบริการทัง้ home node และ remote ตัวอืน่ ๆ ซึ่ง caching เหลานีเ้ รียกวาเปน exclusive copy กรณีสดุ ทายเรียกวาเปน 3-hop miss และมีคา ใชจา ยทีส่ งู กวาเพราะวามันตองการสอบถามทัง้ home directory และ remote cache สังเกตวา model นี้ ไมนบั เวลาในการ invalidation network แบบนีจ้ ะประสบความ สําเร็จในป ค.ศ. 1995-1996

รูป 8.31 แสดงคาใชจายในรอบสําหรับการอางถึง memory โดยเฉลีย่ สมมติใชคา ตาง ๆ ตามรูป 8.30 แตละแทงกราฟจะแสดงใหเห็นถึง การชวยเหลือจากการใช cache local miss, remote miss และ 3 hop remote miss คาใชจา ยนีถ้ กู บังคับโดยผลรวมของ ความถี่ของ cache miss และการ upgrade เชนเดียวกันกับโดยการกระจายของตําแหนง ซึ่ง miss ถูกพอใจ คาใชจายสําหรับการอางถึง remote memory มันจะคงที่ แมวา processor count จะเพิ่มขึ้น ยกเวน Ocean การเพิ่มขึ้น เราควรจะคาดวาเวลาที่ใชในการ อางถึง memory จนเพิ่มขึ้นดวยแมวา รูปที่ 8.31 จะแสดงคาใชจายในการเขาถึง memory ซึง่ เปนคาใชจา ยทีส่ าคั ํ ญ ใน multiprocessor ในทีน่ ้ี รูปแบบของประสิทธิภาพทีส่ มบูรณ จะตองพิจารณาผลของ contention ในระบบ memory เชนเดียวกันกับ การหายไปทีเ่ พิม่ ขึน้ จากความลาชาในเวลาเดียวกัน ในหัวขอที่ 8.8 เราจะไปดูถงึ ประสิทธิภาพทีแ่ ทจริง ของระบบ SGI Challenge protocols ทีต่ ดิ ตอกันซึง่ เราไดพจิ ารณามามากแลว มีสมมติ ฐานหลาย ๆ อยาง ในทางปฏิบตั ิ protocols ตองติดตอ กับสิง่ 2 อยาง คือ nonatomicty of

operations และ finite buffering เราไดเห็นแลววาทําไมการจัดการทีแ่ นนอนถึงไม สามารถเปน atomic ไดในเครื่อง DSM ปจจุบนั มี buffer จํานวนจํากัดทีจ่ ะเก็บ ขอความ ที่ตองการ และตอบกลับสิง่ อืน่ ๆทีเ่ ปนไปได สําหรับ deadlock ความทาทาย ในการออก แบบ เพื่อจะสราง protocols ที่ทํางานไดอยางถูกตอง โดยปราศจาก deadlock โดยการใช nonatomic action และ buffer ที่จํากัด ปจจัยเหลานีจ้ ะเปนความทาทายพืน้ ฐานในระบบ parallel ทัง้ หมด และคําตอบสามารถทีจ่ ะเปนไดหลากหลาย ทัง้ ใน hardware และ software เพราะวาปจจัยนีซ้ บั ซอนมากและก็ไมจาเป ํ นสําหรับการสรุป ในสวนทีเ่ หลือ ของบทนี้

รูป 8.31 ประสิทธิผลของ การอางถึง memory ในเรือ่ ง DSM ขึน้ อยูก บั ความ สัมพันธของ cache misses ทีเ่ กิดบอย ๆ และตําแหนงของ memory ทีม่ กี ารเขาถึง กราฟนี้ แสดงถึงคาใชจายในการเขาถึง memory สําหรับแตละยีห่ อ ทีม่ ี 8, 16, 32 และ 64 processor โดยใช 128 KB data cache และมี set 2 ทาง กับ 64 byte block คาใชจายใน การเขาถึง memory โดยเฉลีย่ ประกอบดวยสวนตาง ๆ ในการเขาถึง 4 อยาง ซึ่งไดแสดง แลวในรูป 8.30 สําหรับยีห่ อ barnes และ LU มี miss rate ทีต่ า่ํ โดยทําใหเวลาในการเขา ถึงตําด ่ วย ในยีห่ อ FFT คาใชจา ยในการเขาถึงทีส่ งู กวาถูกพิจารณาโดย local miss rate ที่ สูง (4 %) และ 3 hop miss rate (1 %) ยีห่ อ สุดทายคือ Ocean แสดงใหเห็นถึงคาใชจาย ใน การเขาถึง memory ทีส่ งู ทีส่ ดุ คาใชจา ยทีส่ งู นี้ เปนผลมาจาก local miss rate ทีส่ งู (เฉลีย่

1.4 %) คาใชจายในการ เขาถึง memory ลดลงจาก 8 ไปยัง 32 processor ที่ 64 processor ขอมูลมีขนาดเล็กมาก ที่จะสรางความสัมพันธ ไดเหมาะสม และทั้ง local miss และ coherence miss ก็สงู ดวย ดังจะเห็นไดจากรูป 8.26 8.5 Synchronization การ Synchronization ถูกสรางขึน้ กับ software ในสวนของผูใ ชโดยอาศัย โครง สรางทาง Hardware สําหรับเครือ่ งเล็ก ๆ หรือมีการแขงขันนอย ความสามารถของ hardware เปนสิ่งที่ไมสามารถขัดขวางได หรือโครงสรางทีต่ อ เนือ่ งโดยการรับและ เปลีย่ นแปลงคา software synchronization ถูกสรางโดยอาศัยความสามารถนี้ เชน เราจะ เขาใจวาประสิทธิภาพในการล็อคการหมุน สามารถทีจ่ ะถูกสรางโดยการใช โครงสราง ของ Hardware Synchronization อยางงาย ๆ และวิธกี ารทีต่ ดิ ตอกันในเครือ่ งทีใ่ หญ ๆ หรือ มีการแขงขันมาก Synchronization สามารถจะกลายเปนคอขวดของประสิทธิภาพ เพราะวา การนําไปสูการแขงขันจะลาชา และเครื่องนี้มีประสิทธิภาพมาก เราจะเห็นได อยางไรวา การแขงขันสามารถเกิดขึน้ ในการสงเสริม การจัดการในสวนของ user บาง อยาง และทดสอบ ความสามารถของ hardware ที่ support synchronization และสามารถ ลดการแขงขันลงได เราเริม่ ตนโดยการทดสอบ พื้นฐานของ hardware แลวสราง Synchronization routine ขึ้นมาหลาย ๆ อยาง แลวหันกลับไปหาปญหาในเรือ่ งประสิทธิ ภาพ ในเครื่องขนาดใหญ และวิธกี ารแกปญ  หานัน้ ๆ Basic Hardware Primitives ความสามารถทีเ่ ราตองการในการสนับสนุน synchronization ใน multiprocessor คือ กลุม ของ hardware ทีส่ ามารถทีจ่ ะอานหรือแกไขตําแหนงของ memory เล็ก ๆ นอย ๆ ถาไมมีความสามารถเหลานั้นแลว คาใชจายในการสราง synchronization พืน้ ฐานจะ สูงมากและจะเพิ่มขึ้นถา processor เพิ่มขึ้น มีจํานวนของทางเลือก ของ hardware พื้น ฐาน ซึ่งทั้งหมดนั้นไดจัดใหมีความสามารถในการอานหรือแกไขตําแหนงเล็ก ๆ นอย ๆ ได พรอมกับมีวธิ ที จ่ี ะบอก ถาการอานและการเขียนนัน้ ถูกกระทํา hardware เหลานี้ คือ กลุมของโครงสรางพื้นฐานซึ่งใชในการสราง การจัดการในสวนของ user ใหมีความ แตกตางกัน รวมทัง้ สิง่ ทีเ่ รียกวา lock และ barrier โดยทัว่ ๆ ไปแลว สถาปตยกรรมไมได ขาดหวังวา ผูใชจะใช hardware พืน้ ฐาน แตควรจะคาดหวังวา hardware พืน้ ฐานเหลานั้น

จะถูกใชโดย system programmer เพือ่ ทีจ่ ะสรางหองสมุด ของ Synchronization ขบวน การเหลานี้มีการซับซอนมาก และพลิกแพลงมาก โดยเริม่ start กับ hardware 1 อยาง และแสดงวามันสามารถที่จะใชสราง synchronization operations พืน้ ฐานไดอยางไร การจัดการอยางหนึง่ สําหรับการสรางการจัดการ synchronization คือ atomic exchange ซึง่ มีการแลกเปลีย่ นคาภายใน ใน register สําหรับคาทีอ่ ยูใ น memory เพือ่ ทีจ่ ะ ใหเขาใจวาจะใช สิง่ เหลานีใ้ นการสรางการจัดการ Synchronization พืน้ ฐานไดอยางไร โดยสมมติวา เราตองสราง lock อยางงาย ๆ โดยคา 0 จะใชแทน lock ทีว่ า ง และ 1 จะใช แทน lock ที่ไมวาง processor จะพยายามทีจ่ ะเซ็ทคา lock โดยทําการเปลีย่ นคาของ 1 กับ ตําแหนงใน memory ทีส่ อดคลองกับ lock นั้น คาจะถูกสงกลับมาจากการ exchange เปน 1 ถามีบาง processor ใชตาแหน ํ งนัน้ อยูใ นกรณีอน่ื จะ return 0 ในกรณีตอมา คาจะถูก เปลี่ยนเปน 1 เพือ่ ปองกันการเปลีย่ นแปลง จาก 0 ตัวอยาง เชน พิจารณา 2 processor ทํา การเปลีย่ นแปลงกอน มันจะ return คา 0 สวน processor ที่ 1 จะ return คา 1 เมื่อมันไมมี การเปลี่ยนแปลง กุญแจสําคัญที่ใช ในการเปลีย่ นแปลง ในการสนับสนุนการจัดการใน ระบบ Synchronization คือ atomic มันเปนไปไมได สําหรับ 2 processor ทีพ่ ยายามทีจ่ ะ เซ็ทคา Synchronization พรอม ๆ กัน ยังมีวธิ อี น่ื อีกทีใ่ ชในการสงเสริม Synchronization มันจะมีคาคุณสมบัติซึ่งไดจาก การอานหรือแกไขคาใน memory ซึง่ เราสามารถทีจ่ ะบอกไดหรือไม ไดวา 2 การจัดการ ใด ๆ จะทําแบบ atomic การจัดการ ที่ 1 จะมีอยูใ นเครือ่ งรุน เกาซึง่ เรียกวา test-andincrement โดยมันจะสงคาของตําแหนงใน memory กลับมาและเพิ่มคามัน โดยใชคา ที่ เปน 0 แทน ตัวแปรของ Synchronization ทีไ่ มไดใช เราสามารถที่จะใช วา test-andincrement เหมือนกับการใชการแรกเปลีย่ น ยังมีวธิ อี น่ื ๆ อีกทีเ่ หมือนกับ วา test-andincrement ซึง่ เราจะอธิบายมันสัน้ ๆ ความแตกตางเพียงเล็กนอยไดทําใหมีการใชการอานและการแกไขในเครื่องรุนใหม ๆ การสงเสริมการจัดการ memory แบบเดียว ๆ มีความทาทายมาก เนือ่ งจากมันตองการ ทัง้ การอาน และการเขียน memory ในเวลาเดียวกัน และไมสามารถที่จะขัดขวางได ความซับซอน นีเ้ ปนการสงเสริมการรวมกัน เนือ่ งจาก hardware ไมอนุญาตใหมกี ารจัด การอืน่ ๆ ในระหวางการอานและการเขียน และตองไมเปน deadlock ทางเลือกอีกทาง หนึ่งคือตองมีคขู องโครงสราง ซึง่ โครงสรางที่ 2 จะสงคา ที่สามารถลดไดมาจาก การทํา

ใหสําเร็จของอีกโครงสรางหนึง่ คูข องโครงสรางนี้ จะปรากฏแบบเล็ก ๆ ถามันปรากฏวา มีการจัดการอื่น ๆ ทํางานกอน หรือหลังโครงสรางนีด้ งั นัน้ เมือ่ คูข องโครงสรางนีท้ ํางาน จะไมมี process อืน่ ๆ เปลีย่ นแปลงคาระหวางนีไ้ ด คูข องโครงสรางนีจ้ ะรวมการนําเขาพิเศษ ซึง่ เรียกวา load linked หรือ load locked และจะมีการเก็บแบบพิเศษ ซึง่ เรียกวา store conditional โครงสรางแบบนีจ้ ะถูกใชตาม ลําดับคือ ถาเนือ้ ของตําแหนงใน memory ทีถ่ กู ระบุโดย load linked ถูกเปลีย่ นแปลงไป กอน store conditional ทีต่ ําแหนงเดียวกันดังนัน้ store conditional จะใชไมไดถามีการ สับเปลีย่ นระหวาง 2 โครงสราง ดังนัน้ store conditional จะใชไมไดเหมือนกัน store conditional ถูกสรางขึน้ มาเพือ่ ทีจ่ ะสงคากลับวา การจัดเก็บนัน้ สําเร็จหรือไม load linked จะสงคาเริม่ ตนกลับและ store conditional จะสงคา 1 กลับถาสําเร็จ และถาไมสําเร็จจะ สง 0 กลับ ตัวอยางขางลางนีจ้ ะแสดงการแลกเปลีย่ นตําแหนงใน memory มากกวา 30,000 รอบ สําหรับ processes ในการผานเขาไปยัง lock แตอยางไรคาเฉลีย่ ของ processor จะใชเพียงครึง่ หนึง่ ของเวลาจริง การพยายามทีจ่ ะไปยังlock มีเลขของ bus transaction รวมกันมากกวา 400 Event Read miss by all waiting processors to fetch lock (20*50) Write miss by releasing processor and invalidates Read miss by all waiting processors (20*50) Write miss by all waiting processors,one successful lock(50), and invalidation of all lock copies(19*50) Total time for one processor to acquire and release lock clocks

Duration 1000 50 1000 1000 3050

รูป 8.33 สําหรับ lock เมือ่ มี 20 processor เวลาในการครองกับปลอย จะเปน single lock มีเพียง bus transection ทีใ่ ช 50 clock cycles ความยากของคําถามนี้เกิดขึ้นสําหรับความพอใจของlockและการเขาถึง lock แตอยางไรก็ดจี ะเกีย่ วกับlatencyของการเขาถึงbusดวย busที่อยูอ ยางเปนระเบียบ

เรียบรอยจะไมดี มันจะทําใหprocessorชา จะมีการทําการlockจากการปลอยbus สําหรับbusที่ไมดีจะมี worst-case scenario อยูด ว ย ปญหาจริงๆก็คอื ลําดับของ processor ของ lock สิง่ ทีส่ าคั ํ ญของขอดีคือ spin lock จะมีbus หรือ รอบของ networkนอยและทําใหมปี ระสิทธิภาพดีเมือ่ นํา lock กลับมาใชใหมโดยprocessorที่ เหมือนกันคือทัง้ คูจ ะสูญเสีย ในตัวอยาง เราจะพิจารณาการทํางานของอุปกรณใน หมวดถัดไป แตกอ นทีเ่ ราจะทํานัน้ อยาลืมทีจ่ ะพิจารณา ในการ spin lock ไปถึงการ รวมกันของ synchronization ลําดับสูงๆ Barrier synchronization การจัดการของการเพิม่ synchronization ในโปรแกรมจะเปรียบเสมือน loop คือ Barrier Barrier เปน processes ของแรงทัง้ หมดถึงจะคอยจนกระทัง่ processor ทัง้ หมดเขาถึง barrier และมากกวา processes ที่จะปลดปลอยทัง้ หมด barrier คืออุปกรณธรรมดาทีส่ ามารถทีจ่ ะ spin ใหเขา lock ได 2 วิธี คือ 1. ใชอปุ กรณในการปองกันทีจ่ ะ processes ทีจ่ ะเขาถึงทีข่ อง barrier 2. จะถือ processes จนกระทัง่ ถึง process ลาสุดทีจ่ ะเขาถึงทีข่ อง barrier ปกติ barrier ของเราจะใชความสามารถในการ spin บนตัวแปรจนกระทัง่ มันแนใจทีจ่ ะ ทดสอบ เราจะใชเครือ่ งหมายในการตัง้ เงือ่ นไขทีแ่ สดงนี้ รูป8.34 คืออุปกรณธรรมดา ของการจัดเตรียม lock และ unlock ทีจ่ ะ spin lock และการรวมคือการ processes ของตัวเลขทีต่ อ ง barrier

lock (counterlock); /* ensure update atomic */ if (count = = 0) release=0 ; /* first =>reset release */ count = count + 1; /* count arrivals */ unlock (counterlock); /* release lock */ if (count = = total) { /* all arrived */ count = 0; /* reset counter */ release = 1; /* release processes */ }

else { /* more to come */ spin (release = = 1); /* wait for arrivals */ }

รูป8.34 Code for a simple barrier การ counter lock จะปองกันการ counter มันสามารถทําให atomically เพิ่มขึ้น ตัวแปรของ count จะเก็บคาของ processes ทีม่ ี การเขาถึง barrier ตัวแปร release คือ ใช processes จนกระทัง่ ถึง barrier สาสุด การ processor ของ(reiease=1) สามารถ process จนกระทัง่ processes หมด ในการฝกหัด มันจะทําใหยงุ ยากทีจ่ ะ processes การใช barrier จะบอย คือ การเขาถึง loop ดังนัน้ processes ในการปลอยจาก barrier ควรจะทํางานเหมือน กันดังนี้ สมมุตมิ กี าร processesซึง่ ไมเคยออกจาก barrier เลย(มันจะอยูท s่ี pin) สิง่ ใด ควรจะเกิดขึ้นถามีตาราง process ของ OS สําหรับตัวอยาง ปจจุบนั มันจะเปนไป ไดทจ่ี ะ process หนึง่ ครัง้ เพือ่ เขาถึง barrier อีก การดําเนินการลาสุดซายมือ ความเร็ว ในการ process จะดําเนินการชามากๆ ใน barrier โดยการ reset ทีก่ ารปลอย ปจจุบนั การ processes ทั้งหมดจะมากมายทีเ่ ปนตังอยางของ barrier นี้ เพราะมีการ processes หนึ่งที่ชามากๆและมีเลขในการ processes สามารถทีจ่ ะรวมกันไว ความ สําคัญในการรักษาคือ โปรแกรมจะไมมสี ง่ิ ใดผิด การแทนทีจ่ ะสนับสนุนการทํา barrier โดยนึกการ processes ยอนที่ไมสามารถสมมุติ จะมีสง่ิ หนึง่ ทีป่ รากฏชัดคือ การนับการ processes ของ barrier และไมอนุญาติการ process ของ barrier และจะ processes barrier ซอนกัน นีค้ อื การแสดงการเพิม่ latency ของ barrier ซึง่ จะลําดับ มา สิง่ ทีเ่ ราเห็นจะเล็กแตกอ นจะใหญ ของการสลับความสมบูรณคอื sense-reversing barrier สิง่ ซึง่ ใชทาให ํ เห็นตัวแปรที่ processes การเริม่ ตน local-sense คือ สิง่ ที่ initialized ถึง 1 สําหรับการ process เพียงอันเดียว รูป8.34 แสดงสัญลักษณสาหรั ํ บ

sense-reversing barrier นีค่ อื รูปแบบของ barrier จะปลอดภัย อยางไรก็ตามตัวอยาง ถัดไปจะแสดงใหเห็นวามันสามารถคงอยูข องประสิทธิภาพอยางเงียบๆ

local_sense = ! local_sense; /* toggle local_sense */ lock (counterlock) ; /* ensure update atomic */ count = count+1; /* count arrivals */ unlock (counterlock) ; /* unlock */ if (count = = total) { /* all arrived */ count = 0 ; /* reset counter */ release = local_sense; /* release processes */ } else { /* more to come */ spin (release = = local_sense) ; /* wait for signal */ } รูป8.35 Code for a sense-reversing barrier หลักการในการทํา barrier คือ ใชการสลับแผนของคาทีป่ ลอย สิง่ ซึง่ จะควบคุมจาก barrier การ processes เร็วมากจะไมดี จะมีการตัง้ คาและปลอยมันในรูป8.34 ตัวอยาง มีการ processors 20 ครั้ง บน bus จะพยายาม execute เร็วมี bus transaction 50 รอบ เราจะไมสนใจเวลาในการอานและเขียนของ lock ใน cache ตอน execute จะมีการจัดการของ nonsychronization ใน barrier และตอนออกจาก barrier สมมุตผิ ลรวมของ bus ดังนั้นการตองการใชทกุ ๆสิง่ คือ การบริการกอนทีจ่ ะ ตองการการ processors อยางรวดเร็ว ไมตอ งกังวลเกีย่ วกับ counting ของการ processors ของ barrier จะใชเวลาอยางไงทีจ่ ะ process

คําตอบ ตามตารางจะแสดงลําดับสําหรับการ processor หนึง่ ถึงอุปสรรคของ barrier สมมุติวาการ process ครัง้ แรกจะลาก bus โดยจะไมมี lock Event Duration in clocks clock For one processor Time for each processor to grab lock, 1,525 increment, release lock Time to execute release 50 Time for each processor to get the release flag 50 Total 1,625

Duration in for 20 processors 30,500 50 1,000 31,550

การ processor จะใชเวลามากมี 20 processor ที่ lock-unlock ตามลําดับ เราจะ พิจารณากันแตแรก ตัวเลขของผลรวมของ bus transactions คือ ประมาณ 440 เราจะสามารถเห็นจากตังอยาง ประสิทธิภาพของ synchronization สามารถมีกระบวนการผลิตชาลงจริงๆ เมือ่ มีการ processes ของ multiple เมือ่ มีสง่ิ ที่ ไมพอใจนิดหนอยและการจัดการ synchronization คือเกิดขึน้ ไมบอ ย พวกเราสวนใหญ จะเอาใจใสเกีย่ วกับศักยภาพของ synchronization นัน่ คือมันจะทํางานอยางไรของการ process เฉพาะบุคคลทีส่ มบูรณของการจัดการของ synchronization พืน้ ฐานของพวกเรา จะจัดการ spin lock สามารถทําได 2 รอบคือ เริม่ ตนทีจ่ ะอาน lock และมันจะเขียน อีกหนึ่งครั้ง เราสามารถปรับปรุงรอบของ bus ไดทเ่ี ดียวซึง่ เปนความหลากหลาย สําหรับตัวอยางเราสามารถจะ spin งายๆบนการจัดการแลกเปลีย่ น ถา lock ทัง้ หมด อยูอ สิ ระ มันสามารถดีขึ้นได แตถา lock ไมอสิ ระ มันจะทําใหสญ ู เสียการเดินทาง ของ bus ตัง้ แตความพยายามของตัวแปรควรจะนํารอบของ bus ในเบือ้ งตน lock จะ processor อยางเงียบๆ เราสามารถเห็นในตัวอยาง ตั้งแตเราเขียนความผิดพลาดสําหรับ ขอมูลใน cache คือ treated และอานความผิดพลาดไดอยางถูกตอง

Synchronization Mechanisms for Larger-Scale Machines อะไรทีด่ เี ราควรจะชอบคือ เครือ่ งจักร synchronization ทีม่ ศี กั ยภาพตํ่า ในการไมตอสูและลําดับในการเรียงจะนอย ประเภทนีจ้ ะเปนทีน่ า พอใจ เราจะเริม่ ดูวา software จะมีการทํางานอยางไร ทีส่ ามารถปรับปรุงประสิทธิภาพของ lock และ barrier เมื่อความตองการอยูใ นระดับสูง ดังนั้นเราควรตรวจสอบพื้นฐานพื้นฐานของ hardware 2 ประเภท ทีม่ คี วามงายไมซบั ซอนจะเปลีย่ นไปตามลําดับในการเก็บศักย ภาพนอยลง Software Implementations หลักการของการ spin-lockคือ การหนวงเหนี่ยวใหไดตามความพอใจ เมือ่ มีการ processes มากๆ การ spin ก็จะขึน้ อยูก บั lock วิธีแกไขวิธีหนึ่งที่คิดขึ้นได จากการ processes เมื่อเขาไมสามารถครอบครอง lock ได นีเ้ ปนความพยายามทีเ่ รา สามารถไดจากการ lock เมือ่ ไมมกี ารจัดการเก็บเงือ่ นไข ประสิทธิภาพทีด่ ที ส่ี ดุ หาได จากการเพิม่ การหนวงเหนีย่ ว เมื่อพยายามแต lock ผิดพลาด รูป8.36 จะแสดงวาอยาง ไรคือ การ spin lock กับ exponential back-off คืออุปกรณ การใชเทคนิครวมกับ สําหรับความพอใจทีน่ อ ยลง ในวิธกี ารรวมกันการรวมกันเขาถึง network รวมกันและ bus (ดูในหัวขอ7.7) นีค่ อื อุปกรณทย่ี งั คงพยายามคุม ครองใหศักยภาพนอยลง เมื่อความ พอใจนอยลง โดยไมหนวงเหนีย่ วการ spin loop ผลลัพธคือ ถามีการ processes มากๆจะมีการคอยเกิดขึน้ back-off จะไมทาให ํ เกิดผลกระทบตอการ processes แตผล ลัพธควรจะมีประสิทธิภาพนอยเมือ่ lock โดยการ processes 2 อยาง และวิธแี รกจะ เกิดขึ้นใหหามัน

lockit:

li R3 , 1 ll R2 , 0(R1) bnez R2 , lockit addi R2 , R2 , 1 sc R2 , 0(R1)

;R3 = initial delay ;load linked ;not available-spin ;get locked value ;store conditional

gotit:

bnez R2 , gotit sll R3 , R3 , 1 pause R3 j lockit use data protected by

;branch if store succeeds ;increase delay by 2 ;delays by value in R3 lock

รูป8.36 A spin lock with exponential back-off เมือ่ มีการจัดเก็บเงือ่ น ไขผิดพลาด มันจะหนวงเหนีย่ วคาของการ process เปน R3 อุปกรณในการหนวง เหนีย่ วโดยการเพิม่ R3 จน reach มันเปน 0 การเลือกเวลาทีถ่ กู คือ อุปกรณจะขึน้ อยู กับการหนวงเหนีย่ ว อยางไรก็ตามมันควรจะเริม่ กับคาการประมาณของเวลาทีว่ พิ ากษ และปลอย lock รูปแบบ R3 จะหยุดชั่วคราว ควรจะหาสาเหตุของการหนวงเหนีย่ ว R3 คาใน R3 จะเพิ่มขึ้นโดย 2 เวลา ในเงื่อนไขผิดพลาด สิง่ ทีจ่ ะดําเนินการจะคอยเวลา กอนทีจ่ ะครอบดรอง lock อีก เทคนิคอีกอันสําหรับอุปกรณของ lock คือ ใชการเขาคิวของ lock โดย เราสามารถแสดงการทํางานในสวนถัดไปของอุปกรณ hardware แต software ใช array สามารถไดประโยชนเหมือนกัน (ดูตวั อยางที8่ .24) กอนทีจ่ ะไปดูท่ี hardware ที่ซบั ซอน มองดูวธิ กี ารทํางานของ barrier อุปกรณของ barrier จะทนทานจากความพอใจ เมือ่ เราตองการนับการ ปรับปรุงเล็กๆนอยและจะปลอย เมือ่ การ processes ทั้งหมดตองถูกปลอยใหอา น แต กอนจะแข็งแรงมากเพราะมันตองการไมรวมในการเขาถึงตัวแปรของ synchronization และดังนั้นควรจะสราง synchronization มากๆในการเปรียบเทียบ โดยทัว่ ไปจะใชเพียง แตอาน เราสามารถทําใหความพอใจนอยลงคือ combining tree โครงสรางทีต่ อ งการ จะรวมในรูปแบบของ tree การรวม tree สามารถใชอปุ กรณในการ process ในการ ปลอย มีความพอใจซึง่ เราจะออกสําหรับใชปฎิบตั ิ เราจะรวม barrier ของ tree ในการเริม่ ตัดสินใจ n-ary โครงสราง tree เราจะใชคาของ k ในการ fan-in ในเบือ้ งตน k=4 จะทํางานไดดี เมือ่ มีการ process kth ออกจาก node ใน tree เราจะมีสญ ั ลักษณในชัน้ ถัดไปใน tree เมือ่ การ process

มาถึงยัง root เราจะปลอยการ processes ในตัวอยาง เราใชเทคนิค sense-reversing ตาม tree-based barrier ใช tree ในการรวมการ processes และการปลอยสัญลักษณ ของ barrier

struct node { /* a node in the combining tree */ int counterlock; /* lock for this node */ int count; /* counter this node */ int parent; /* parent in the tree = 0..P – 1 except for root = -1 */ }; struct node tree [0..P-1]; /* the tree of nodes */ int local_sense; /* private per processor */ int release; /* global release flag */ /* function to implement barrier */ barrier (int mynode) { lock (tree[mynode] . counterlock); /* protect count */ tree[mynode] . count=tree[mynode] . count+1; /* increment count */ unlock (tree[mynode] . counterlock); /* unlock */ if (tree[mynode] . count==k) { /* all arrived at mynode */ if (tree[mynode] . parent >=0) { barrier (tree[mynode] . parent); } else{ release = local_sense; } tree[mynode] . count = 0; /* reset for the next time */ } else{

spin (release==local_sense); /* wait */ }; }; /* codeexecuted by a processor to join barrier */ local_sense = ! local_sense; barrier (mynode); ในตอนแรกไมมีการพัฒนา node ใน array tree แตวา node ในการ รวมการ processes ของ k และไดจดั เตรียมทีแ่ ยกกันของ counter และ lock ดังนัน้ จะ processes ที่ k ที่ node เมือ่ process kth ของ node ใน tree มันเปนสาเหตุใน การเจริญเติบโต สาเหตุในการลดลงของ count เมือ่ count ในสาเหตุของ node k count จะตั้งคาในการดําเนินการครัง้ สุดทาย sense-reversing ใชเลีย่ งเสนทางใน barrier แบบฝกหัด 8.22 และ 8.23 ถามคุณเกีย่ วกับการวิเคระหการรวมเวลาของ barrier คูก บั การไมรวม MPPs ( เชน T3D และ CM-5 ) มีการสนับสนุนการรวม ของ hardware สําหรับ barrier Hardware Primitives ในสวนนีเ้ ราจะมอง hardware เปน 2 synchronization อยางแรกกับ lock อยางทีส่ องเราจะใชประโยชนสาหรั ํ บ barrier และตัวเลขของการจัดการ userlevel ที่ตองการนับหรือประยุกตขน้ึ พิเศษ ในกรณีนเ้ี ราสามารถสราง hardware ทีม่ ี ศักยภาพอยางแทจริงไดเหมือนกันในรูปแบบของเราเอง แตตอ งเปนลําดับมากทีส่ ดุ เมื่อมีความพอใจ ปญหาหลักโดยทัว่ ไปของ lock คือ มันจะนําไปสูจานวนใหญ ํ ๆของ ความพอใจที่ไมตองการ สําหรับตัวอยาง เมือ่ lock ไดถกู ปลอยการ processor ทัง้ หมดโดยทัว่ ไปจะมีทง้ั อานและเขียน miss อยางไรก็ตามโดยมากการ processor สามารถสํารวจได lock ใน unlock สิง่ ทีเ่ กิดขึน้ บนลําดับของ 20 lock/unlock เรา สามารถปรับปรุงเหตุการณตา งๆเหลานีไ้ ด โดย heading อยางชัดเจนโดย lock จาก การ processor ถัดไป คอนขางจะลําบากพอสมควร ทีจ่ ะอนุญาติใหการ processor ทัง้ หมด แขงขันกับเวลาทีป่ ลอย lock เรากับรายการของการดําเนินการและ heading ของ

lock หนึง่ อยางชัดเจน เมือ่ มัน spin กลับมานีค้ อื ชนิดหนึง่ ของเครือ่ งจักรทีเ่ รียกวา queuing lock queuing lock เปนอุปกรณทม่ี คี วามสามารถใน hardware สิง่ ซึง่ เรา บรรยายทีน่ ห้ี รือใน software จะเก็บระยะทางของการ processes แนวคิดเบือ้ งตนที่ เหมือนกันอีกกรณี อุปกรณ hardware คือ directory-based machine ทีซ่ ง่ึ เหมาะสม กับบุคคลที่จะดําเนินการหาขอมูลในการ processor อยางซับซอน ใน bus-based machine ในอุปกรณ software ควรจะเหมาะสมมากและควรจะมีการ processor เรือ่ งความแตกตางของทีอ่ ยูส าหรั ํ บ lock อนุญาติใหสงผานขอมูลไดชัดเจนของ lock จากหนึง่ การ process จะทํางานตาม queuing ไดอยางไร บน first miss ถึงตัวแปรของ lock miss สง synchronization ควบคุมเปนสิง่ ซึง่ บางทีจะสมบูรณกบั การควบคุม memory (ใน bus-bases system) หรือการควบคุม directory ถา lock มีอิสระมันจะมีการ processor อยางงายๆ ถา lock หาคาได มันจะควบคุมการสราง record ของ node ทีต่ อ งการ ( such as a bit in a vector ) และสงการ processor กลับไปยังคา lock สําหรับ เปลีย่ นแปลงสิง่ ซึง่ processor การ spin เมือ่ lock มีอสิ ระ จะเลือกควบคุมการดําเนิน การไปทีห่ วั จากรายงานเพือ่ คอยการ processor มันสามารถปรับปรุง lock ไดอีก ใน การเลือกการ processors ของ cache หรือทีใ่ ช copy ไมได กรณีนก้ี าร processor จะ miss และดึงคาจาก lock มา copy ตัวอยาง bus transaction เทาไร และความยาวเทาไรมันจะมี 20 processors lock และ unlock ที่เปลีย่ นแปลงตาม queuing ของ lock บน miss (ทําการสมมุตฐิ านเกีย่ วกับ ความสมบูรณทเ่ี หมือนอันกอนๆ) คําตอบ การ processor ของ miss แตละอันบน lock ในเบือ้ งตนและอันแรกจะเปน lock อิสระ ดังนั้นมันจะมีเพียง 40 bus cycles เทานั้น ลําดับที่1 20ในเบื้องตน miss take 1000 รอบ โดย 50 รอบ สําหรับ 20 จะปลอย นีค้ อื ผลรวม 2050 รอบ กรณีน้ี มีความหมายดีกับ conventional coherence-bases spin locks มีการจับคูค วามสัมพันธหลัก ในความสามารถของ queuing ของ lock เริ่มแรกเราตองการแบงสิง่ ทีจ่ ะเขาถึง lock ดังนัน้ เราสามารถปฎิบตั กิ ารจัดการตาม queuing ได และดวยการปลอย lock queuing เราสามารถจัดเตรียมการ processor

ของ lock ได การ processor ตาม queuing สามารถแยกประเภทของอุปกรณใน อุปกรณ directory-based คือ queuing จะสัมพันธกนั ทีจ่ ะแบงกันตัง้ และเหมือน hardware ตองเตรียมปรับสภาพของ lock ตั้งแตการ process ทีต่ อ งการ lock จะมี context-switched และบางทีไมมตี อ งดูตารางอีกทีบนการ processor ทีเ่ หมือนกัน

queuing lock สามารถใชปรับปรุงประสิทธิภาพของพวกการจัดการของ barrier (ดูตัวอยาง 8.15) การสลับเราสามารถแนะนําโดยจะซับซอนนอยลงตามจํานวนการของ เราทีต่ อ งการเพิม่ barrier count thus reducing เปนลําดับทีท่ าให ํ ขบวนการผลิตชาลง สิ่งที่ควรจะเปรียบเทียบประสิทธิภาพของ queuing lock อีกหนึง่ นัน้ มีการแนะนํา สําหรับสราง synchronization operations คือ fetch-and-increment สิง่ ทีด่ งึ คาโดย อัตโนมัติและเพิ่มคา การกลับคาสามารถเพิ่มคาหรือดึงคาได fetch-and-increment ทีเ่ รา สามารถปรับปรุง barrier เปรียบเทียบกับ simple code-sensing barrier ตัวอยาง เขียน code สําหรับ barrier fetch-and-increment ทําใหเหมือนสมมุตใิ นตัว อยางและจัดการ fetch-and-increment 50 clock เวลาในการตัดสินใจ 20 processors ถึงอุปสรรค barrier เทาไรที่ bus cycle ตองการ คําตอบ จากรูปที8่ .34 แสดงใหเห็นถึงสัญลักษณสาหรั ํ บ barrier นีค้ อื อุปกรณท่ี ตองการ 20 fetch-and-increment การจัดการและ 20 cache miss สําหรับปลอยการ จัดการผลรวมของเวลาทัง้ หมด 2000 รอบและ40 bus/interconnect การจัดการมากกวา 15 times และ 10 time ของการจัดการของ bus ถึง barrier สามารถใช fetch-andincrement รวมกับ tree barrier ในลําดับของ node แตละ node local_sense = ! local-sense; /* toggle local-sense */ fetch_and_increment (count); /* atomic update */ if (count = = total) { /* all arrived */ count = 0; /* reset counter */ release = local_sense; /* release processes */

} else { /* more to come */ spin (release = = local_sense); /* wait for signal */ รูป8.37 Code for a sense-reversing barrier using fetch-andincrement to do the counting เราจะเห็นปญหาของ synchronization สามารถกลายเปนความเงียบที่ เหมาะสม ในเครือ่ งวัดทีใ่ หญ เมือ่ กําหนดใหทา ทายโดย synchronization คือ รวมกับ ความทาทายโดยใชศักยภาพของ memory ระยะยาวและศักยภาพไมเทากันในการเรียก ในการคํานวณ เราสามารถเห็นประสิทธิภาพของ large-scale เปรียบเทียบไวกบั อุปกรณทท่ี า ทาย ในหัวขอ 8.8 เราจะตรวจสอบราคาของ synchronization ทีม่ อี ยูจ ริง bus-bases multiprocessor สําหรับการประยุกตใชจริงๆ 8.6

Models of Memory Consistency ไมแนใจวา cache จะเกีย่ วกับ multiple processor ประกอบอยูใ น memory มันไมไดเปนทั้งคําตอบและคําถามคือ ประกอบอยูใ น memory อยางไร เมือ่ ตองการเห็นการ processor จะมีการพัฒนาใหทนั สมัยโดยการ processor อีก ตัง้ แต processor การสือ่ สารเขาไปรวมกับคา(ทัง้ คูส าหรั ํ บคาของขอมูล และใชสําหรับ synchronization) คําตอบอยูข า งหลังนี้ อะไรคือรายการทีต่ อ ง processor การเขียนขอมูลการ processor มีเพียงทางนีค้ อื ‘ สังเกตุการเขียนขอมูลของการ processor’ คือการอานกลายมาเปนคําตอบ อะไรเปนคาบังคับระหวางอานและเขียน ความแตกตางของสถานที่ โดยการ processor ทีแ่ ตกตาง อยางไรก็ตาม คําถาม,ประกอบอยางไร,เห็นตัวอยาง มันจะยุง ยากมาก แตเรา สามารถตามไปเห็นตัวอยางได ทีน่ ม่ี ี 2 สวนจากการ processes P1 และการ processes P2 ดังนี้ P1 : A = 0 ;

P2 : B = 0 ;

..….. A=1; L1 : if (B == 0)…

...….. B=1; L2 : if (A == 0) …

สมมุตกิ าร processes คือ การวิง่ บนการ processors ทีแ่ ตกตางและที่ ตัง้ A และ B เปน cache ดัง้ เดิมโดยการ processors ทั้งคูก บั คาของตัวอักษรตัวแรก คือ 0 ถาเขียนบอยๆอาจจะทําใหเกิดผลกระทบและปจจุบนั เห็นโดยการ processors มันจะเปนไปไดสาหรั ํ บคํากลาวทัง้ คู( พวก L1 และ L2)คาของเงื่อนไขจะถูก ตัง้ แต ระยะทางถาคําสั่งมีความหมายอื่นๆ A หรือ B ตองมีผรู บั โอนคา 1 แตสนับสนุนการ เขียนคือ จะสําเร็จและ processor คืออนุญาติใหทําใหสาเร็ ํ จ ดังนัน้ มันจะเปนไปไดทง้ั คู P1 และ P2 มีการเห็นที่ใชไมไดสาหรั ํ บ B และ A (respectively) กอนเขาทัง้ หลายพยายามอานคา คําตอบคือ ควรจะมีพฤติกรรมอนุญาติและทําดังนั้นใตเงื่อนไข อะไร รูปการเปดเผยโดยมากสําหรับประกอบความจําคือ เรียกวา sequential consistency ประกอบดวยลําดับของความตองการ นั่นก็คือผลลัพธของ execute โดย เหมือนกัน ถาเขาถึง execute โดยเพียงการ processor เก็บในรายการและเขาถึงการ processors ความแตกตางคือ ไปสอดแทรก รูปที8่ .38 แสดงวาทําไมหามประกอบของ ลําดับ ขณะ execute ทีท่ ง้ั คูม คี า ของเงือ่ นไขจริง

P1 :

L1 :

A = 0;

P2 :

B = 0;

.….

.….

A = 1;

B = 1;

if (B = = 0) …

L2 :

if (A = = 0) …

รูป8.38 ในการประกอบของลําดับทั้งคูถาคําสั่งไมสามารถหาคาที่ถูกได ตัง้ แต memory เขาถึงการ process หนึง่ ตองเก็บใน 2 program ในรายการและอาน A และ B ดังนัน้ จะสมบูรณทอ่ี น่ื กอนอันอืน่

เห็นวานีค้ อื ถูกพิจารณาจากรายละเอียดของ program สีเขม สําหรับทัง้ คูมันคือ คําสัง่ ทีถ่ กู รายการทีแ่ สดงโดยลูกศรสีเขมตองถือไว ตัง้ แตอา นตองปรากฏถา เขาปรากฏกอนทีจ่ ะเขียน สําหรับทัง้ คูท ม่ี รี ายการจะถือ program ตองมีการ spin ใน รายการการเขารวมของการ spin หมายความวามันคือการเขียนทีเ่ ปนไปได ในการเขา ถึงรายการนีค้ อื ความหมายทีช่ ว ยทําใหคุณมั่นใจ ทางทีไ่ มซบั ซอนประกอบดวยลําดับคือ ความตองการการ processor ไปยังความสําเร็จของการเขาถึง memory จนกระทัง่ invalidation ทัง้ หมดสาเหตุโดย การเขาถึงโดยสมบูรณ มันจะมีคา เทากันทีช่ ดั เจน ซึง่ ถัดจากการเขาถึง memory จน กระทั่งมีความสมบูรณอันใดอันหนึ่งขึ้นมากอน จําวาการจัดการรวมประกอบ memory ความแตกตางของตัวแปร การเขาถึงแบบทีส่ อง ตองมีรายการทีจ่ ริง ถึงสภาพความแตก ตางของ memory ในตัวอยางของเรา เราตองยึดเวลาการอานของ A และ B(A = = 0 หรือ B = = 0) จนกระทัง่ เขียนขึน้ มากอนมีความสมบูรณ (B = 1 หรือ A = 1)ใต การประกอบของลําดับนี้เราไมสามารถ สําหรับตัวอยาง สถานทีท่ เ่ี ขียนอยางงายๆ ใน การเขียนเครือ่ งกันกระแทกและตอจากนัน้ จะอาน อยางไรก็ตาม จะนําเสนอการ ประกอบการเรียง เปน program ตัวอยาง ศักยภาพประสิทธิภาพจะนอยลง โดยเฉพาะ อยางยิง่ ในเครือ่ งจักรกับการ processors ของตัวเลขทีม่ ากๆหรือการติดตอทีย่ าวนาน เราสามาเห็นไดจากตัวอยางนี้ ตัวอยาง สนับสนุนวาเรามีการ processor ที่ไหนที่เขียน miss take 40 รอบ กําหนด ownership มี 10 รอบ ที่ใชไมไดหลังจาก ownership คือกําหนดและ 50 รอบ สําหรับใชไมไดถงึ สมบูรณและรับรูว า มันคือกําลังสมมติ มี 4 processor ทีร่ ว ม cache block มีความยาวอยางไรที่ processor การเขียนถา processor คือ ประกอบดวย

ลําดับ สมมตินั้นคือใชไมไดตองกําหนดใหรกู อ นการควบคุม directory เขาทั้งหลายจะ สมบูรณ สนับสนุนวาเราสามารถกลาว execute หลังจากหามาได ownership สําหรับ เขียน miss สําหรับใชไมได มีเทาไรที่ควรจะเขียน คําตอบ เมือ่ ไรทีเ่ ราคอยสําหรับการใชไมได เพียงเขียนผลของ ownership ของเวลา เพิม่ ขึน้ จะใชไมไดเมือ่ เวลาไมสมบูรณ ตั้งแตใชไมไดสามารถซอนกัน เราตองการเพียง เกีย่ วกับ 1 สิ่ง เริม่ 10+10+10+10 = 40 รอบ หลังจาก ownership คือกําหนดผลรวม ของเวลาทั้งหมด 40+40+50 = 130 รอบ ในการเปรียบเทียบเวลาของ ownership มี เพียง 40 รอบ การ processes write-buffer ที่เหมาะสม มันเปนไปไดที่ตอไปกอน ownership คือกําหนด The Programmer’s View อยางไรก็ตามรูปแบบ sequential consistency มีขอ เสียของประสิทธิ ภาพจากความคิดเห็นของ programmer มันมีขอดีของความงาย มันจะทาทายการพัฒนา รูปแบบ program คืออธิบายตัวอยางและอนุญาติใหมปี ระสิทธิภาพสูง รูปแบบของ program ทีอ่ นุญาติใหมปี ระสิทธิภาพ สมมุติ program synchronized program synchronization ถาเขาถึงทัง้ หมดจะรวมขอมูลคือรายการโดยการจัดการ synchronization โดยขอมูลจะอางถึงรายการการจัดการ synchronization ถาในทุกๆสิง่ เปนไปได execute จะเขียนตัวแปรโดยมีหนึง่ การ processor และการเขาถึง(การอาน และการเขียน)สําหรับสิง่ ทีเ่ ปลีย่ นแปลงได โดยการ processor ที่แยกโดยคูข องการจัด การ synchronization มีหนึ่ง execute หลังจากทีเ่ ขียนโดยการ processor การเขียน และหนึ่ง execute กอนเขาถึง โดยการ processor ขั้นที2่ กรณีทต่ี วั แปรบางทีพฒ ั นาขึน้ เขากับรายการโดย synchronization เรียกวา ขอมูล races เพราะจะไดผลลัพธที่ ตองการบนความเร็วทีส่ มั พันธกนั ของการ processor และชอบ races ในการออกแบบ hardware ผลลัพธบอกลวงหนา มีชื่อของผูนําอีกสําหรับ program synchronization data-race-free ยกตัวอยาง พิจารณาตัวแปรทีอ่ า นตอนเริม่ และปรับปรุงการ processors ถึง 2 ความแตกตาง การ processor การอานของสิง่ แวดลอมและปรับปรุงกับ lock และ unlock ทั้งคูจะมีการปรับใหทนั สมัย และประกอบไปดวยการอาน อยางดีทกุ ๆ

การเขียนตองแยกจากการอานโดยการ processor อืน่ ๆโดยการจัดการของ synchronization หนึง่ unlock (หลังจากเขียน) และหนึ่ง lock (กอนจะอาน) ถาสอง การ processor ที่เขียนสามารถเปลีย่ นแปลงไดโดยไมตอ งแทรกแซงการอาน ดังนัน้ การเขียนจึงตองแยกดวยการจัดการของ synchronization เราเรียกการจัดการ synchronization ทีต่ รงกันถึง unlock วา release เพราะวามันปลอยพลังการ processor ใน block และการจัดการ synchronization ที่ ตรงกันถึง lock วา acquire เพราะวามันไดอา นตัวแปรทีถ่ กู เราใช term ไดและปลอย เพราะเขาทัง้ หลายประยุกตความกวางของโครงสราง synchronization ไม lock และ unlock ตัวอยางถัดไปแสดงทีซ่ ง่ึ ไดและปลอย ใน synchronization ทีห่ ลากหลายจาก หมวดหมูท เ่ี กิดขึน้ กอน

ตัวอยาง แสดงการจัดการทีไ่ ดและปลอยในการ processes ของ lock และการ processes barrier ในรูป8.34 คําตอบ นี่คือ lock code กับการจัดการการเขาครอบครอง lockit :

ll R2,0 (R1) ;load linked bnez R2 , lockit ;not available-spin addi R2 , R2 , 1 ;get locked value sc 0(R1) , R2 ;store beqz R2 , lockit ;branch if store fails

การจัดการสําหรับ lock นี้คือ การจัดการเก็บงายๆ ทีน่ ค้ี อื code สําหรับการจัดการ barrier กับการเขาครอบครองในตัว เขมและปลอยในตัวเอียง (มีสองทีท่ ต่ี อ งเขาครอบครองและสองทีท่ ต่ี อ งปลอยใน barrier) lock (counterlock) ; /* ensure update atomic */

if (count==0) release=0 ; /* first => reset release */ count=count+1 ; /* count arrivals */ unlock (counterlock) ; /* release lock */ if (count==total) { /* all arrived */ count=0 ; /* reset counter */ release=1 ; /* release processes */ } else { /* more to come */ spin (release==1) ; /* wait for arrivals */ } เราสามารถกําหนดเมื่อ program คือการไดมาของ synchronized และ ปลอย program คือ synchronized ถาทุกลําดับในการ execute ของการเขียนโดยการ processor และการเขาถึงของขอมูลทีเ่ หมือนกันตามลําดับเหตุการณ write (x) …… release (s) …… acquire (s) …… access (x) มันงายตอการเห็นถาเรียงตามลําดับตามนี้ program synchronized ใน ความสามารถในการเขารวมขอมูลของรายการบอยๆ โดย synchronization และขอมูล races เปนไปได

มันจะยอมรับการสังเกตสวนมากเพราะถาเขาถึง unsynchronized พฤติ กรรมของ program ควรจะตัดสินใจ การ processor สิง่ ทีด่ ขี องขอมูล races และผล กระทบตอผลลัพธของ program กับ sequential consistency เหตุผลเกีย่ วกับ program ที่ขาด programmer สามารถรับประกันรายการตางๆ โดยการสรางเครือ่ ง synchronization ของพวกเขา แตนค่ี อื ความหลอกหวงสุดๆ สามารถทีจ่ ะนํา programmer จะมีการแทนโดยเลือกใช synchronization และแกไขใหมปี ระสิทธิภาพ สําหรับเครื่องและชนิดของ synchronization มาตราฐาน ห อ งสมุ ด synchronization สามารถแยกประเภทและดํ าเนิ น การใช สํ าหรั บ synchronization ในหองสมุดคือ release หรือ acquire หรือบางเวลาอาจจะทั้งคู สําหรับ ตัวอยางในกรณีของสิง่ กีดกัน สิ่งสําคัญของการเขาถึงแบบ unsynchronized ในโปรแกรมทีต่ อ งการหลีกเลีย่ ง ราคาของ synchronization และจะรับมุมมองทีไ่ มสอดคลองของหนวยความจํา ตัวอยาง เชนในโปรแกรม stochastic เราจะมีการอานและreturnคาเกาของขอมูล เพราะโปรแกรม จะยังคงรวมกันเปนคําตอบทีถ่ กู ตอง ในบางกรณีพวกเราจะตองการระบบทีด่ ใี นลักษณะ ทีม่ เี หตุผล แตเราไมตอ งการไวใจบน well-define เปนรูปแบบของความสอดคลอง ตอมาการจัดแบบ synchronization เราตองการทีจ่ ะจัดระเบียบของหนวยความจํา มี 2 ชนิดของการจํากัดบนรายการหนวยความจํา คือ write fences และread fences fences เปนจุดสําคัญในการคํานวณ และรับประกันวาจะไมอา นหรือเขียนขาม fences ไป ตัวอยางเชน การเขียน fences ประมวลผลโดย processor P ทีแ่ นนอน เขียนทัง้ หมดโดย P เกิดขึน้ กอนที่ P จะexecuted เขียนการทํางานของfencesที่มีความ สมบูรณและ ไมเขียนเกิดขึน้ หลังจาก fence ใน Pเปนสมาชิกกอน fence ในการเรียงลํ าดับการอานทั้งหมดจะอานfence และการเขียนทั้งหมดจะเขียน fence ความสามารถทีจ่ ากั ํ ดของ hardware ถึงการเขาถึงในทางทีด่ ี รายการเหลานีจ้ งึ ตอง ยึดอยางเครงครัด จากจุดมุงหมายของประสิทธิภาพ processor จะชอบอานใหหสาเร็ ํ จ เร็วกวาที่ เปนไปไดและสมบูรณ และเขียนชากวาทีเ่ ปนไปได fence แสดงเขตแดนเหมือนอํานาจ ของ processor ในการอานและเขียนเกีย่ วของกับ fence แมวา การเขียน fence คือ two-

way blockade มันจะถูกใชบอยมากในการทําใหการเขียนสมบูรณ ตัง้ แต processor ตองการขยายการเขียนใหสําเร็จ ดังนัน้ ผลกระทบของการเขียน fence มีสาเหตุจากการ กระทําโปรแกรมในตอนตนจนกระทัง่ การเขียนทีค่ า งอยูส าเร็ ํ จ การอาน fence คือ two-way blockade ดวยเปนจุดทีเ่ ร็วหรือชา การอานบางทีจะ ถูก executed การอาน fence จะถูกใชมากในการทําสัญลักษณ ในจุดทีเ่ ร็วในการอานบาง ที executed memory fence คือoperationทีแ่ สดงทัง้ การอานและการเขียน fence Memory fence บังคับการเขาถึงของการประมวลผลทีแ่ ตกตาง ภายใน single processเราตองการ รักษารายการของโปรแกรม ดังนัน้ การอานและเขียนก็เหมือนกับทําเลทีต่ ง้ั ทีไ่ มสามารถ สับเปลีย่ นได รูปแบบของ weaker consistency ซึง่ โตเถียงในสวนถัดไปสามารถซอนการอาน และเขียน โดยกําหนดการอานและการเขียน fence นอยกวา ในรายละเอียดการแสดงการ เขาถึง synchronization คอนขางจะหลีกเลีย่ งกวาการเขาถึงแบบธรรมดา Relaxed Models for Memory Consistency เนื่องจากโปรแกรมสวนใหญเปนแบบ synchronization และเนื่องจาก sequential consistency model จะแสดงความไมมีประสิทธิภาพหลักเราควรจะกําหนดรูปแบบที่ relax มากขึน้ ทีย่ งั ยอมใหมกี ารแสดงประสิทธิภาพทีส่ งู ขึน้ และยังคงรักษาความงายของ รูปแบบโปรแกรมสําหรับ synchronize โปรแกรมได ความจริงมีจํานวนของ relaxed model ทีท่ กุ การ maintain คุณสมบัตทิ ่ี excution semantics ของ synchronized program เปนแบบเดียวกันภายใตรปู แบบทีม่ นั ควรจะเปน ภายใต sequential consistency model สวน relaxed model จะผันแปรตามความแนนที่ model นี้ บังคับเซตของความเปนไปได ของความถีข่ องการปฏิบตั ิ และดังนั้น จํานวนมากเทาไรทีเ่ ขากําหนดบนการ implement ในการเขาใจความหลากหลายระหวาง relaxed model และความเปนไปไดในการ แสดงสําหรับการ implement มันงายทีส่ ดุ ถาเรากําหนดรูปแบบในเทอมของทีว่ า อะไร เปนลําดับระหวางการอานและการเขียน “การปฏิบตั โิ ดย processor เดีย่ วๆ” ซึง่ ถูกรักษา โดยแตละ model มี 4 ลําดับ คือ 1. R " R : read ถูกตามดวย read

2. R" W : read ถูกตามดวย write ซึง่ มักจะถูกรักษาถา operations เปน address เนือ่ ง จากมันไมขน้ึ อยูก บั (antidependence) 3. W"W : write ถูกตามดวย write ซึง่ มักจะถูกรักษาถามันเปน address เดียวกัน เนือ่ ง จากมันเปน output ทีไ่ มตอ กัน (output dependence) 4. W"R : write ถูกตามดวย read ซึง่ มักจะถูกรักษา ถามันเปน address เดียวกัน เนือ่ ง จากมันเปนการขึน้ ตอกันจริงๆ ถามีการขึ้นอยูตอกันระหวาง read และ write แลวโปรแกรมทีเ่ ปน processor เดียว จะตองการ operation ทีเ่ ปนลําดับ ถาไมขึ้นตอกันแลว memory consistency model จะกําหนดลําดับทีต่ อ งถูกสงวนไว sequential consistency model ตองการลําดับทัง้ 4 ขอนั้น และเทากับการสันนิษฐานโมดูลเดีย่ วๆทีเ่ ปนศูนยกลาง memory นั้น การติดตอ กันของทุก processor operation หรือการสันนิษฐานของทุกๆ การอานและการเขียนเปน อุปสรรคของ memory เมื่อการจัดลําดับถูกพัก มันงายที่จะหมายถึงการที่เรายอมใหoperationถูกกระทํา ตอมาโดยprocessor เพือ่ ใหสมบูรณในขัน้ แรก ตัวอยางเชน การพักของลําดับจาก W"R หมายถึงเรายอมใหอานชากวาที่เขียน เพือ่ ใหสมบูรณกอ นทีก่ ารเขียนจะสมบูรณ การ เขียนจะไมสมบูรณ จนกระทัง่ ทัง้ หมดของมันจะเปนโมฆะ อยางสมบูรณ ดังนัน้ การให การอานเกิดขึน้ หลังการเขียน ความผิดพลาดจะถูกควบคุม แตกอ นจะเปนโมฆะ consistency model จะจัดลําดับของเหตูการณ แทนทีจ่ ะกลาววาลําดับอะไรทีเ่ ปน ไปได สามารถจะถูกสงวนไวได ตัวอยางเชน ในลําดับทีถ่ กู ตองตรงกัน ระบบจะตอง รักษา 4 ลําดับนัน้ แมวา ในทางปฏิบตั มิ นั สามารถยอมใหจดั ลําดับใหมได การแบงอยาง ละเอียดนี้ยอมใหสงเสริมการใชกลอุบายที่จะจัดลําดับเหตุการณใหมโดยปราศจาก การ ยอมใหจดั ลําดับใหม สามารถที่จะสงเสริมการไมเปลี่ยนแปลงลําดับได ตัวอยางเชน การยอมให processor P ริเริม่ การเขียนอันอืน่ กอนการเขียนอันกอนสําเร็จ นานเทาที่ P ไมยอมใหคาํ ของการเขียนอันหลังสมบูรณกอ นการเขียนอันแรก สําหรับความงาย เราไดพิจารณาวา ลําดับอะไรที่ตองสงวนไวกับการเขาใจ การสนับสนุนที่ยืดหยุนเพื่อสงวนลําดับที่เล็ก นอย เพียงแคมที รรศนะเกีย่ วกับการรักษาลําดับ

รูปแบบทีไ่ มเปลีย่ นแปลง( The consistency model ) ตองกําหนดลําดับระหวาง ตัวแปรทีจ่ ะถูก access พรอมๆกัน ซึง่ การกระทํานีจ้ ะเหมือนการเลีย่ ง และการ access อื่นๆทัง้ หมด เมือ่ เครือ่ งจักรสนับสนุนความไมเปลีย่ นแปลงของลําดับ การอานและการ เขียนทัง้ หมด รวมถึงการ access ในเวลาเดียวกัน เปนการเลีย่ งและรักษาลําดับสําหรับรูป แบบที่ออ นกวา เราตองการระบุการจํากัดลําดับโดยการ access ในเวลาเดียวกันซึง่ ดีเทา กับการจํากัดลําดับทีพ่ วั พันกับตัวแปรปกติ ขอจํากัดของการจัดลําดับทีง่ า ยทีส่ ดุ คือทุกๆ การ access ทีพ่ รอมกันเปนการปองกัน memory ถาเราให S เปนตัวแทนสําหรับตัวแปร ที่ accessพรอมๆกันเราควรจะเขียนดวยลําดับทีแ่ สดงสัญลักษณดงั นี้ S"W , S"R , W" S และ R"S การ access พรอมๆกันซึง่ เปน R หรือW และลําดับของมันถูกกระทบโดย การ access พรอมๆกับอันอืน่ ซึ่งหมายความวามีลาดั ํ บ S"S รูปแบบแรกเราทดสอบการพักของลําดับระหวางการเขียนและการอาน (address ที่ตา งกัน) การจัดลําดับ W"R ; เปนรูปแบบแรกทีถ่ กู ใชในสถาปตยกรรม IBM 370 ซึ่ง modelทีย่ อมให buffer ของการเขียนถูกผานโดยการอาน ซึง่ จะเกิดขึน้ เมือ่ processor ยอมใหการอานกระทําตอไปกอนมันจะรับประกันวา การเขียนอันกอนโดย processor นั้น จะถูกเห็นไดโดย processor อืน่ ๆทัง้ หมด modelนีย้ อมใหเครือ่ งซอน operation การ เขียนไวภายใน ยิง่ ไปกวานัน้ โดยการพักเยงลําดับเดียว หลายๆ application จะไมใช เวลาเดียวกัน การกระทําอยางถูกตอง แมวา operation ทีเ่ กิดขึน้ พรอมๆกันจําเปนทีต่ อ ง แนใจวาการเขียนสมบูรณกอ นการอาน processor ทีไ่ มเปลีย่ นแปลง และ Total Store Ordering ( TSO ) ถูกใชสาหรั ํ บชือ่ modelนี้ และหลายๆเครือ่ งจะเลือกmodelนี้ modelนี้ เทากับการกระทํา การเขียนเปนการปกปองการเขียน เราสรุปไดวา ทุกๆmodel จะแสดง การกําหนดของลําดับในรูป 8.39 และแสดงในตัวอยาง 8.40 ถาเราอนุญาติใหการเขียนไมชนกันแลว ก็จะเปนการผิดระเบียบอยางสมบูรณ โดยการพักของลําดับ W"W เราถึง model ทีเ่ รียกวา Partial Store Ordering( PSO ) จาก การสนับสนุนจุดมองนัน้ มันอนุญาติใหกาoperation การเขียนเหลือ่ มกัน มากกวาทีจ่ ะ บังคับให operation เดียวสมบูรณกอ นอันอืน่ operation การเขียนตองการเพียงเปนเหตุ ใหหยุดเมือ่ operation เกิดขึน้ พรอมกัน ซึง่ เปนสาเหตุใหการปองกันการเขียนปะทะกัน หลักที่ 3 ของ relaxed model จะจํากัดลําดับ R"R และ R"W model นี้ ซึง่ เรียก วา Weak ordering มันจะไมรกั ษาลําดับระหวางการอางอิง ยกเวนสิง่ ตอไปนี้

การอานหรือการเขียนจะสมบูรณกอ น operation ทีเ่ กิดขึน้ พรอมกันใดๆ ถูก execute ในลําดับของโปรแกรมโดย processor หลังจากการอานหรือการเขียน operation ทีเ่ กิดขึน้ พรอมๆกัน มักจะสมบูรณ กอนการอานหรือการเขียนใดๆจะเกิด ขึ้นในลําดับของโปรแกรมหลัง operation ดังแสดงในรูป 8.39 เพียงการกําหนดลําดับในลําดับทีอ่ อ นกวาถูกสรางขึน้ โดย operation ทีเ่ กิดขึน้ พรอมๆกัน แมวาเราจะจํากัดจาก R"R และ R"W, processor สามารถไดรับ ประโยชน ถามันเปนการอานแบบ nonblocking อีกนัยหนึง่ processor สงเสริม 2 ลําดับ นี้ เนือ่ งจากคําสัง่ สามารถถูก execute จนกระทัง่ R สมบูรณ แมวา การอานแบบ nonblocking processor อาจจะมีประโยชนทจ่ี ากั ํ ด จากการทีพ่ กั ลําดับของการอาน เนื่องจากประโยชนหลักเกิดขึน้ เมือ่ R ทําให cache miss และ processor ไมสามารถทีจ่ ะ รักษาความไมวางสําหรับ 10 – 100 รอบ ซึง่ จะทําให cache miss เกิดขึน้ โดยทัว่ ๆไปแลว ประโยชนทส่ี าคั ํ ญของ weaker consistency model คือการซอนการเขียนมากกวาการอาน relaxed model สามารถทีจ่ ะไดรบั โดยการขยาย weak ordering รูปแบบนีเ้ รียกวา release consistency ความแตกตางระหวาง synchronization operation ใช acquire ใน การเขาถึงการแบงตัวแปร( SA ) และใช release ซึง่ อนุญาติให processor เขาถึง( SR ) release consistencyเปนพืน้ ฐานในการเฝาดูโปรแกรม synchronization และการดําเนิน การแบบ acquire จะตองมีการแบงขอมูลกอน และการดําเนินการแบบ release จะปรับ ปรุงการแบงขอมูล และตองทํากอนทีจ่ ะ acquire ครั้งตอไป การอนุญาตินค้ี วบคุมการ พักโดยเฝาดูการอานหรือเขียนกอน acquire ตองการ ซึง่ ไมสมบูรณ ดังนัน้ การเขียนหรือ อานตามที่ release ตองการ ไมตอ งรอสําหรับ release ดังนัน้ การดําเนินการเก็บรักษา เกีย่ วของกับ SA และ SR เพียงเทานัน้ ซึง่ แสดงในรูป 8.39 ตัวอยางแสดงในรูป 8.40 การ กําหนดแบบมีนอ ยกวาการจัดการ 5 แบบ การเปรียบเทียบ release consistency กับ weak ordering จะพิจารณาอะไรบางที่ ตองการ สําหรับ weak ordering ถาเราแยกแตละ S ในรายการของ SA และ SR สิง่ เหลานี้ จะนํา orderingทั้ง 8 ที่เกีย่ วกับการเขาถึงแบบ synchronization และการเขาถึงแบบ ordinary รวมทัง้ 4 ordering ทีเ่ กีย่ วกับการเขาถึงแบบ synchronization อยางเดียว เรา สามารถเห็นทัง้ 4 orderingทีต่ อ งการภายใต weak ordering ไมใชการกําหนดภายใต release consistency : W"SA ,R"SA ,SR" R และSR" W

release consistency เปนหนึง่ ในการจัดหาของแบบทีจ่ ากั ํ ด ซึง่ งายในการตรวจ สอบและทําใหมน่ั ใจวาโปรแกรม synchronization จะเห็นลําดับของการกระทําทีต่ รงกัน ขณะทีก่ ารจัดการแบบ synchronization แตละ acquire และ release และ causes จะ เหมือนกับ weak ordering

รูป 8.39 ordering ที่กําหนดโดยรูปแบบทีห่ ลากหลาย และแสดงการเขาถึงแบบ ordinary และการเขาถึงแบบ synchronization รูปแบบนีเ้ จริญเติบโตจากมากทีส่ ดุ จนถึงนอยทีส่ ดุ อนุญาติใหเพิ่มความยืดหยุนในการ implementation รูปแบบของ weaker จะเพิ่มความนา เชือ่ ถือโดยการจัดการแบบ synchronization โดยการตอตาน fence ที่แฝงอยูท ก่ี ารจัดการ ทุกๆหนวยความจํา SA และ SR ตัง้ อยูบ นการจัดการแบบ acquire และ release ตอง พิจารณาและตองกําหนด release consistency ถาเราใชสญ ั ลักษณ SA และ SR สําหรับ S แตละรายการ S จะมี 2 ordering(S"W จะมี SA W,SR"W) และแตละ S"S จะมี 4 ordering แสดงอยูใ นบรรทัดสุดทายของตาราง "

รูป 8.40 ตัวอยางของรูปแบบความสอดคลองในการตัดสินใจ 5 อยาง ในสวนนี้แสดง การสรุปตัวเลขของการกําหนด ordering ดวยรูปแบบทีก่ ลายมาเปน relaxed เพียงราย การเล็กๆแสดงทิศทางการลําเลียง เชน การเขียนของ C กอนทีจ่ ะ release ของ S ในรูป แบบของ sequential consistency ทีไ่ มไดแสดงไว มันเปนไปไดทจ่ี ะพิจารณาเพียงแคลําดับทีอ่ อ นแอกวา ตัวอยางเชน ในการปลด ปลอยทีไ่ มเปลีย่ นแปลงเราไมตอ งใชตําแหนงใน memory กับตัวแปร synchronization บางสวน ถาเราตองการตัวแปร synchronization ตัวเดียวกัน, V,เราตองการกอนทีจ่ ะ เขาถึงบางตําแหนงใน memory เสมอ, M,ตัวอยางเชน เราสามารถทีจ่ ะพักลําดับทีจ่ ะ เขาถึง M และใชงานและปลดปลอยตัวแปร synchronization อื่นๆที่ไมใช V ลําดับ ของการพิจารณานีม้ คี วามสัมพันธโดยตรงกับการสงเสริม ลําดับทีอ่ อ นแอกวา ซึง่ ไดยก ตัวอยางไปแลวมันยากทีจ่ ะสงเสริมและมันไมชดั เจนวา การสงเสริมลําดับทีอ่ อ นแอกวา มีประโยชนหรือไม Implementation of Relaxed Models รูปแบบของการพักของความมัน่ คง สามารถทีจ่ ะสงเสริมกับการเพิม่ hardware เพียงเล็กนอย ระบบทีซ่ บั ซอนสวนมาก อยูบ นการสงเสริมและการสนับสนุน memory หรือการติดตอภายในระบบ ซึง่ สามารถนําประโยชนของรูปแบบการพักมาใชได ตัว อยางเชน ถา memory หรือการติดตอภายในไมอนุญาติใหหลายๆ processor เขาถึง พรอมกัน ดังนัน้ ประโยชนของรูปแบบการพักก็จะนอยลง แตโชคดีทป่ี ระโยชนสว น ใหญสามารถทีจ่ ะมีจานวนการเขี ํ ยนนอยๆและมีการอาน 1 ครั้ง ในหัวขอนี้เราจะอธิบาย การสงเสริมโดยตรงของ processor และการปลดปลอย directory protocol ของเรา

พอใจอยูแ ลวกับการบังคับของ การไมเปลีย่ นแปลงตามลําดับ เนือ่ งจาก processor จะ หยุดจนกระทัง่ กระบวนการนัน้ สมบูรณและ directory จะเปนโมฆะ กอนทีจ่ ะตอบไป ยังการเขียน processor consistency (หรือ TSO)คือการสนับสนุนโดยอนุญาติใหการ อานมองขามการเขียนทีย่ งั เขียนไมเสร็จ buffer ของการเขียน สามารถทีจ่ ะตรวจสอบวา การเขียนทีย่ งั เขียนไมเสร็จนัน้ มีตําแหนงเดียวกับการอานหรือไม และรวมทัง้ memory และระบบการติดตอภายใน สามารถทีจ่ ะสนับสนุน 2 การอางอิงตอ node มันเพียงพอ ที่จะสนับสนุนหัวขอนีป้ ระโยชนของ processor consistency ทีเ่ หนือกวา sequential consistency คือการอนุญาติใหการเขียนที่ miss ถูกซอนได Release consistency อนุญาติใหการเขียนถูกซอนและถา processor สนับสนุน การอานทีเ่ ปนแบบ nonblocking แลวมันจะอนุญาติใหการอานถูกซอนดวย การทีจ่ ะ อนุญาติใหการเขียนถูกซอนมากทีส่ ดุ เทาทีจ่ ะเปนไปไดนน้ั processor ตองอนุญาติให หลายๆการเขียนทีส่ าคั ํ ญและอนุญาติการอานที่ miss มองขามการเขียนทีส่ ําคัญ เพือ่ ที่ จะใหไดประสิทธิภาพสูงสุด การเขียนควรจะสําเร็จ และลบขอมูลใน buffer ของการ เขียนโดยเร็ว ซึง่ จะอนุญาติใหการอานสามารถทํางานได การทีจ่ ะใหการเขียนสําเร็จนัน้ ตองการอนุญาติใหการเขียนสําเร็จทันทีทข่ี อ มูลคา และกอนที่ invalidation ทีค่ า งอยูจ ะ สําเร็จ การสนับสนุนวิธที ง้ั directory และตนฉบับของความตองการ สามารถทีจ่ ะเก็บ ใน จํานวน ของ invalidation สําหรับแตละการเขียนทีส่ าคั ํ ญ หลังจากแตละ invalidation ตอบกลับมา จํานวนของ invalidation ทีค่ า งอยูจ ะลดลง เราตองแนใจวา invalidation ที่คา งอยูท ง้ั หมดนัน้ เกิดขึน้ กอนทีจ่ ะเขียนจะสําเร็จ และกอนที่ การปลอย จะสําเร็จ ดังนัน้ เราจะเช็คจํานวนของ invalidation ทัง้ หมด ของการเขียนทีส่ าเร็ ํ จ ใน การปฏิบัติเราจํากัดจํานวนของการเขียนทีส่ าคั ํ ญ ดังนัน้ มันวายทีจ่ ะตรวจดูวา การเขียน และ invalidation ทีค่ า งอยู การซอนการอานเราตองมีเครือ่ งซึง่ มีระบบการอานแบบ nonblocking มิฉะนั้น แลวเมือ่ processor block จะมี processor เพียงเล็กนอยเทานัน้ ทีจ่ ะทํางานได ถาการ อานเปนแบบ nonblocking เราสามารถทีจ่ ะอนุญาติใหมนั ทํางานได โดยทีข่ อ มูลยังคง รักษาความถูกตองไวได มันไมเหมือนกับการเพิม่ การอานแบบ nonblocking กับ relaxed consistency จะเพิ่มประสิทธิภาพ การจํากัดประโยชนทีจ่ ะไดรบั เพราะวาเวลา ในการอานใน multi processor นีใ้ ชมากและ processor สามารถที่จะใหเพียงแคความ

จํากัดความสามารถในการซอน ตัวอยางเชน ถาการอานเปนแบบ nonblocking แต processor จะ block การอานหลังจาก 2-3 รอบ ถา processor สนับสนุนการอานแบบ nonblocking และแบบไมมลี ําดับ มันจะ block buffer ของมันทันที เชน จัดลําดับ buffer ใหมหรือจองสถานีไวหรือ buffer เต็ม สิง่ เหลานีอ้ าจจะเกิดขึน้ เปนสวนใหญใน 10 รอบ ในขณะที่ miss อาจทําใหเกิด 100 รอบ ดังนั้นแมวาเราจะไดรับผล ประโยชนที่จากั ํ ด แตมันก็มี ผลบวกระหวางการนําเขาแบบ nonblocking และ relaxed consistency Performance of Relaxed Models ประสิทธิภาพของ relaxed consistency ขึน้ อยูก บั ความสามารถของเครือ่ งและ ประโยชน การพิจารณาประสิทธิภาพของ memory consistency เราจะตองกําหนดสิ่ง แวดลอมของ hardware เราพิจารณารูปรางของ hardware และคุณสมบัตดิ งั ตอไปนี้ : ผลลัพธของ pipeline หนึ่งคําสัง่ ตอ clock cycle และเปนแตละ statically หรือ dynamically scheduled หนาทีภายในหนวยทัง้ หมดคือ 1 cycle ความผิดพลาดของ cache 50 clock cycle CPU รวมการเขียนทีป่ ะทะกับสวนลึก 16 Cache คือ 64 KB และ 16-byte lines ใหลกั ษณะพิเศษของ tradeoffs และประสิทธิภาพทีส่ ามารถเปนไปได กับความ สามารถทีแ่ ตกตางของ hardware เราพิจารณารูปแบบของ hardware 4 แบบ 1. SSBR (statically scheduled with blocking reads )- processor คือ statically scheduled และอานความผิดพลาดใน cache ของ block ทีต่ ดิ กัน 2. SS (statically scheduled )- processor คือ statically scheduled แตไมทําการอาน เพราะ processor ไปขวางจนกระทัง่ ผลลัพธถกู ใช 3. DS16 (dynamically scheduled with a 16-entry reorder buffer )- processor คือ dynamically scheduled และมีreorder buffer อนุญาติใหขน้ึ ถึง 16 คําสัง่ ทีส่ าคั ํ ญของ แบบตางๆ รวมทัง้ 16 คําสัง่ ของการเขาถึงหนวยความจํา 4. DS64 (dynamically scheduled with a 64-entry reorder buffer )- processor คือ dynamically scheduled และมี reorder อนุญาติใหขน้ึ ถึง 64 คําสัง่ ทีส่ าคั ํ ญของแบบ

ตางๆ reorder buffer แบบนี้ ใหญเพียงพอที่จะแกผลรวมความผิดพลาดของ cache ใน 50 cycle รูป 8.41 แสดงการเปรียบเทียบประสิทธิภาพสําหรับโปรแกรม 2 โปรแกรม LU และ Ocean สําหรับhardware 4 แบบและสําหรับ 2 ความแตกตางของแบบทีค่ งทีค่ อื total store order (TSO) และ release consistency ประสิทธิภาพ คือ การการแสดงการ เปรียบเทียบประสิทธิภาพภายใตกาสนับสนุนทีต่ รงไปตรงมาของsequential consistency แบบ relaxed เสนอประสิทธิภาพบน Ocean มากกวาบน LU สิง่ เหลานีง้ า ยเพราะ Ocean มีอัตราความผิดพลาดที่สูงกวา และมีสวนที่เปนความผิดพลาดของการเขียน ในการตี ความขอมูลในรูป 8.41 จําไดวา cache คืองานทีเ่ ล็ก ผูอ อกแบบจํานวนมากจะเพิ่มขนาด ของ cache กอนทีจ่ ะรวม nonblocking read หรือเริม่ ที่ dynamic scheduling การสรุป อยางรวดเร็วของอัตราการผิดพลาดและประโยชนที่เปนไปไดจากรูปแบบ relaxed ที่ นอยสําหรับ application นี้ Final Remarks on Consistency Models ในป จ จุ บัน เครื่ อ งจํ านวนมากสนั บ สนุ น ให ส รางชนิดของแบบของ weak consistency ซึง่ เปลีย่ นแปลงจาก processor consistency ถึง release consistency และ เกือบทั้งหมดที่สนับสนุนลําดับที่คงที่ ตั้งแตที่ synchronization คือเครือ่ งทีม่ ลี กั ษณะ เฉพาะอย า งสู ง คาดว า ผู  เ ขี ย นโปรแกรมส ว นมากจะใช พื้ น ฐานของห อ งสมุ ด synchronization และจะเขียนโปรแกรม synchronization ทําทางเลือกของ weak consistency ที่ไมปรากฏถึงผูเ ขียนโปรแกรม และประสิทธิภาพระดับสูงทีย่ ดื หยุน การ พัฒนาคือความคิดของการไมกําหนดโปรแกรมทําใหเกิดการไมไววางใจบนคาสุดทาย ความเปนไปไดอยางหนึ่งคือ ผูเขียนโปรแกรมไมตองการความไวใจบนเวลาของการ ปรับปรุงถึงการเปลีย่ นแปลงในโปรแกรม ความเปนไปไดอยางอื่นคือ รูปแบบของเครือ่ ง ที่มลี กั ษณะเฉพาะทีต่ อ งการใช นานมาแลวทีก่ ารเขาถึงขอมูลแบบ latencies ยังคงทํา ตอไปเรือ่ ยๆ ในการเปรียบเทียบการเพิม่ ประสิทธิภาพของ processor และลักษณะเดน ของการเพิม่ ทีไ่ ดเปรียบเทียบกับรูปแบบ relaxed เชน nonblocking caches รวมถึงใน processor ทีม่ ากกวา ความสําคัญของการเลือกรูปแบบ consistency ทําใหรปู แบบของ โปรแกรมสะดวก และมีการเพิ่มประสิทธิภาพสูง

รูป 8.41 ประสิทธิภาพของรูปแบบ relaxed consistency บนกลไกของ hardware ตางๆที่ ไมคงทีจ่ ากเหตุผลพอสมควรทีม่ คี วามทะเยอทะยานสูง cache เปน 64KB แสดงไวบน แผนทีโ่ ดยตรงกับ 16-byte block ความผิดพลาด 50 cycle กับ SSBR ของภายในการ เขียนคือการซอนใน benchmarks เหลานี้ มันนํา dynamic scheduling ซอนการอานและ เปนไปอยางสมบูรณในการซอนการอาน ซึ่ง buffer ใหญกวาที่ latency ตองการ (DS64) สําหรับขนาดของ cache ทีใ่ หญ อัตราการหายไปของ Ocean ยังคงตกตอไป และทําขอ ไดเปรียบของรูปแบบ relaxed สําหรับตัวอยาง, ที่ 256 KB cache กับ 64-byte lines และ 16 processor อัตราการหายไปคือ 2% การนํา upper bound ของ 2.0บนขอยกเวนจาก แบบของ relaxed Crosscutting Issues เพราะ multiprocessor redefineลักษณะพิเศษของระบบจํานวนมาก เราแนะนํา การออกแบบปญหาทีผ่ า นคลืน่ ในสวนนีเ้ ราใหตวั อยางทีห่ ลากหลาย : ความแนนอนของ การวัดประสิทธิภาพ, 2 ตัวอยางที่เกี่ยวของกับระบบหนวยความจํา ตัวอยางของผล กระทบระหวาง complier และรูปแบบของ memory consistency และวิธีใชสาหรั ํ บการ สนับสนุนหนวยความจําทีแ่ ทจริงเปนอุปกรณแบงหนวยความจํา Performance Measurement of Parallel Machines สวนหนึง่ ของประเด็นทีโ่ ตแยงในแนวทางทีเ่ ทาเทียม มีวธิ ใี ดในการวัดประสิทธิ ภาพของเครือ่ งทีเ่ ทาเทียมกัน แนนอน คําตอบทีต่ รงไปตรงมาคือยีห่ อ ของการวัดทีบ่ รรจุ และพิจารณา wall-clock time การวัดwall-clock time ปรากฎ ชัดในการทําเรือ่ งมีเหตุผล;

ใน processor ทีเ่ ทาเทียมกันการวัด CPU time สามารถอางอิงโดยผิดหลัก เพราะบางที processor เกียจครานแตไมสามารถเอามาไดสาหรั ํ บการใชอน่ื ๆ ผูใชและผูออกแบบทีส่ นใจในความไมจงใจในการกระทําเครือ่ งทีด่ ี กับตัวเลขที่ แนนอนของ processor แตถงึ อยางไรขนาดของประสิทธิภาพก็มากกวาที่ processor เพิ่ม เขาไปในหลายๆกรณีมนั ทําใหเหตุผลของการวัดประโยชนหรือยีห่ อ ถายีห่ อ เหลานีไ้ มมี การวัด ผลกระทบเกิดขึน้ จากความคลายคลึงกันทีจ่ ากั ํ ด และการเพิม่ การติดตอสามารถ นําผลลัพธในแงรา ยเมือ่ คาดวาจะมีมากกวา processor จะใชปญ  หาทีใ่ หญกวาเกา ดังนัน้ มาตราสวนความเร็วเพิม่ ขึน้ จะเปนประโยชนมาก เนือ่ งจาก processor เพิม่ ทัง้ คูส าหรั ํ บ ปญหา fixed-size และสําหรับเรือ่ งของมาตราสวนของปญหา การหาเรือ่ งของ scaled และ unscaled เป น การเร ง ความเร็ ว ที่ เ ป น เส น โค ง ทางเลื อ กของขนาดเทา ไรที่ uniprocessor algorithm ใหความสําคัญในการหลีกผลลัพธที่ผิดหลัก ตั้งแตการใช parallel version ของbenchmark บางทีภายใตการกําหนดประสิทธิภาพของ uniprocessor และดังนั้น overstate จึงเรงความเร็วขึน้ นีค่ อื การโตตอบกับตัวอยางในสวน 8.9 หนหนึ่งเรามีการตัดสินมาตราสวนปริมาณการเรงความเร็ว คําถามคือใชมาตรา สวนเทาใด สมมุตเิ รามีการกําหนดยีห่ อ ของการทํางานของขนาด n บน p processor ซึ่ง ทําดวยเหตุผล คําถามคือใชมาตราสวนของbenchmark เทาไร ทํางานบน m x p processor มี2 ทางทีป่ รากฎชัดในทางของอัตราสวนของปญหา : เก็บรักษาจํานวนของ หนวยความจําที่ใชตอ processor constant ; และเก็บรักษาผลรวมของ execution time สมมุติการเรงความเร็วทีส่ มบูรณแบบ วิธแี รกเรียกวา memory-constrained scaling โดย เฉพาะปญหาในการทํางานของ m x n บน m x p processor วิธีที่ 2 เรียกวา timeconstrained scaling ตองรูความ สัมพันธระหวาง running timeกับขนาด ของปญหา สําหรับตัวอยาง; สมมุติ m วา running time ของ application กับ ขอมูลขนาด n บน p processor คือสัดสวนของ n2 ในชวงของ time-constrained scaling ปญหาในการทํางานคือ ปญหาของใครก็ตามที่ running time ดีบน m x p processor ยังคงเปน n2 ปญหากับ running time ทีด่ มี ขี นาด x n ตัวอยาง สมมุตเิ รามีปญ  หา execution time สําหรับขนาดของปญหา n คือ O(n3) สมมุติ running timeทีแ่ ทจริงบน 10-processor machine คือ 1 ชัว่ โมง ภายใต time-constrained และ memory-constrained หาขนาดของการทํางานของปญหาและผลของ running time สําหรับ 100-processor machine

คําตอบ สําหรับปญหา time-constrained เหมาะสมกับ running timeเหมือนกัน, 1 ชั่ว โมง, ดังนั้นขนาดของปญหาคือ 3 10 x n สําหรับ memory-constrained scaling, ขนาดของปญหาคือ 10n และexecution time ทีด่ คี อื 103/10 หรือ 100 ชัว่ โมง ผูใชจํานวน มากจะไมคอยเต็มใจในการทํางานของปญหาบนรายการที่มีขนาดมากกวา processor สําหรับ 100 ครัง้ ทีย่ าวกวาขนาดของปญหานีน้ า จะเปน unrealistic ในการเพิม่ วิธขี องมาตราสวน มีคาถามเกี ํ ย่ วกับมาตราสวนของโปรแกรมอยางไร เมื่อเพิ่มขนาดของปญหากระทบกระเทือนระดับของผลลัพธ ตั้งแตโปรแกรมที่เทากัน จํานวนมากคือปลอมปรากฎการณทางกายภาพที่เปลี่ยนคุณลักษณะขนาดของปญหาของ ผลลัพธ และเราจะตองเปลี่ยน application จํานวนมากกับผลกระทบนี้ ตัวอยางเชน พิจารณาผลกระทบของเวลาที่รวมกันสําหรับแกสมการทีแ่ ตกตาง ในเวลานีเ้ ปนตัวอยาง ในการเพิ่มขนาดของปญหา สําหรับตัวอยาง เราตองการกลาวซําสํ ้ าหรับปญหาทีใ่ หญ ดัง นัน้ เมือ่ เราเพิม่ ขนาดของปญหา ผลรวมของ running time บางทีจะเร็วกวามาตราสวนพืน้ ฐานบนเครือ่ งหมาย O( ) analysis สําหรับตัวอยาง สมมุตจิ ํานวนของการเติบโตซําๆ ้ เสมือนเลขของขนาดของปญหา ผลกระทบของ runningtime ทีแ่ ทจริงเสมือนกับ O(n log n) ถาเราวัดมาตราสวนจากปญหาขนาด m บน 10 processor มาตราสวน purely algorithmic จะอนุญาติใหปญ  หาดําเนินการขนาด 10 m บน 100 processor การนับ สําหรับการเพิ่มใน iteration หมายถึง ปญหาของขนาด k x m, ที่ k log k = 10,จะมี running time เหมือนกับบน 100 processor ซึง่ ยอมใหมาตราสวนของ 5.72 m มากกวา 10 m ในทางปฏิบตั กิ ารแบงการวัดซึง่ ตองการขอผิดพลาดทีเ่ ขาใจไดดขี องการประยุกต และบางทีเกีย่ วกับปจจัยอืน่ เชน การทนทานตอขอผิดพลาด( สําหรับตัวอยาง,มันกระทบ เกณฑของcell-opening ใน Barnes-Hut ) ในทางกลับกันเชน ผลกระทบทีส่ ําคัญกระทบ ตอการติดตอหรือคุณสมบัตทิ ค่ี ลายกันของประโยชนทด่ี ใี นการเลือกขนาดของปญหา scaled speedup ไมเหมือนกับ unscaled speedup ; จะทําใหสับสนระหวางขอผิด พลาดทัง้ สองทีน่ ามาอ ํ าง scaled speedup มีหนาทีสาคั ํ ญ เพียงแตเมือ่ วิธกี ารของ scaling คือเสียง และผลลัพธ เปนรายงานทีป่ ระยุกตมาจาก scaled version Memory System Issues ตามที่พวกเราเห็นในบทนี้ ผลลัพธของระบบหนวยความจํา เปนศูนยกลางของ การออกแบบของ shared-memory multiprocessor อยางแนนอน multiprocessor แนะนํา

ความซับซอนของระบบหนวยความจําใหมๆมากมายทีท่ าให ํ ไมอยูใน uniprocessor ใน สวนนีเ้ รามองการปฏิบตั ขิ อง 2 ผลลัพธ ซึง่ มีผลกระทบตอความหมายของการออกแบบ และเครือ่ งมือของระบบหนวยความจํา ในเนื้อหาของ multiprocessor Inclusion and Its Implementation Multiprocessor จํานวนมากใช multilevel cache ในการเปลีย่ นการแบงระดับที่ ตองการบนความเกีย่ วของกันทีเ่ ปนสากล และ latency ของ cache misses ถาcache จัด เตรียม multilevel inclusion ทุกๆการแบงระดับของ cache คือกลุม ยอยของระดับทีห่ า ง จาก processor ดังนัน้ เราสามารถใชโครงสราง multilevel ในการบรรเทาการแขงขัน ระหวาง coherence traffic และprocessor traffic ดวยการอธิบายอยางรวดเร็ว ดังนัน้ multiprocessor จํานวนมากกับ multilevel caches จึงมีการรวมคุณสมบัตกิ นั ขึน้ เปนการ จํากัดดวยการเรียก subset property เพราะแตละกลุมยอยของ cache อยูต ากว ่ํ ามันในการ แบงระดับ การมองในขั้นแรก เปนการรักษาคุณสมบัติ multilevel inclusionทีด่ เู หมือนไม สําคัญ พิจารณา 2 level ตัวอยาง : ความผิดพลาดใน L1 แตละการชนใน L2 หรือกอให เกิดความผิดพลาดใน L2 มันจะนําสาเหตุเขาไปใน L1 และ L2 ทัง้ คู การทําใหเปนโมฆะ นั้น การปะทะใน L2 จะสงถึง L1 มันจะเปนสาเหตุของblockทีเ่ ปนโมฆะ ถามันยังคงอยู จะเกิดอะไรเมือ่ block size ของ L1 และ L2 แตกตางกัน การเลือกความแตกตาง ของ block size คือเหตุผลอันแทจริง เนือ่ งจาก L2 ใหญกวาและมีความยาวมากกวาสวน ประกอบทีแ่ ฝงอยูใ น miss penalty ของมัน และดวยเหตุน้ี จึงตองการใช block sizeที่ ใหญกวา จะเกิดอะไรกับการบังคับแบบอัตโนมัตขิ องการรวมเมือ่ block size มีความแตก ตาง? block ใน L2 คือผลคูณของ block ใน L1 และความผิดพลาดใน L2 เปนตนเหตุให เกิดการแทนทีข่ องขอมูล นั่นคือการคูณ block ใน L1 มีผลลัพธเทากัน สําหรับตัวอยาง ถา block size ของ L2คือ 4 times ของ L1 ดังนั้นความผิดพลาดใน L2จะแทนทีผ่ ลลัพธทเ่ี ทา กันของ 4 block ใน L1 ตัวอยาง สมมุตวิ า L2มี block size เปน 4 time ของ L1จะแสดงความผิดพลาดอยางไร สําหรับ address ที่เปนสาเหตุใหเกิดการแทนที่ใน L1และ L2สามารถลวง ละเมิดการนําของคุณสมบัติ inclusion

คําตอบ สมมุตวิ า L1และ L2เปนdirect mapped และblockของ L1คือb byte และ block ของ L2คือ 4b byte คาดวา L1บรรจุblock กับเริม่ ที่addresses x และ x+b และ นั่นคือ x mod 4b = 0, หมายถึง x เริม่ ที่ address ของ block ใน L2นั่นคือblock เดียวใน L2บรรจุ L1 block x, x+b, x+2b และx+3b สมมุติ processor อางอิง block y ทีบ่ รรจุ block x ใน cacheและhence misses เนื่องจากความผิดพลาด ของ L2มันนํา 4b byte และแทนที่blockทีบ่ รรจุ x, x+b, x+2b และx+3b ขณะที่ L1นํา b byte และแทนที่blockทีบ่ รรจุ x เนือ่ งจาก L1ยังคงบรรจุ x+b แต L2ไม ไดทาํ คุณสมบัติ inclusionจึงไมยาวกวาการบรรจุ การรักษา inclusion กับ multiple block sizes เราจะตองตรวจสอบลําดับทีส่ งู กวา ของการแบงลําดับ เมือ่ การแทนทีท่ ําทีร่ ะดับทีต่ ากว ่ํ า ทําใหมั่นใจวาคําใดๆทีถ่ กู แทนที่ ในระดับทีต่ ากว ่ํ าจะทําใหเปนโมฆะใน higher-level caches ระบบจํานวนมากเลือกการ แกไขแบบนี้ มากกวาตัวเลือกของความไมไวใจบน inclusion และ snooping the higherlevel caches ในแบบฝกหัดนีเ้ ราสงเสริมการสํารวจ inclusion และแสดงความคลายคลึง กันของปญหาทีค่ งอยู ถาความเกีย่ วของของ level คือความแตกตาง Nonblocking Caches and Latency Hiding เราไดเห็นใจความสําคัญของการ nonblocking หรือการไม lock caches มาแลว ซึง่ เปนแนวคิดทีถ่ กู นํามาใชเพื่อลด cache misses โดยการ overlapping กับการประมวล ผลและโดยการลําเลียงสิง่ ทีส่ ญ ู หาย ยังมีประโยชนอน่ื ๆอีกในกรณีของ multiprocessor คือประการแรกเนื่องจากากรสูญหายมีมากขึ้น หมายความวามีหลาย latency ถูกซอน และมีโอกาสที่จะเกิดความสูญหายระหวางการลําเลียงมากขึ้นดวย แตเพราะวาหนวย ความจํ าและความสั ม พั น ธ กั น ระหวาง system สามารถจั ด การหลายๆ memory references ได เครื่องตองการ nonblocking caches เพือ่ เอาประโยชนจาก weak consistency models เชนในการ implement แตละ modelนั้น การทีเ่ ขียนแบบnonblocking นั้นจะมี ความสัมพันธกบั การอานของ processor นีส้ ามารถอานไดตลอดโดยทันที, โดยการใช buffer ในการเขียนหรือทันทีทม่ี กี ารสราง block และ update caches Relaxed consistency models ยอมให มี ก ารเปลี่ ย นแปลงขั้ น ตอนของความสู ญ หาย แต nonblocking caches มีความจําเปนในการทําใหไดประโยชนสงู สุดและเต็มที่ การใช

nonblocking caches มากขึน้ ๆทําใหสามารถคาดหวังถึงความเปนไปไดของประโยชนท่ี เราจะไดรับจาก relaxed consistency models วาจะมีมากขึ้น ในทีส่ ดุ nonblocking caches ก็สามารถสนับสนุนการ implementing prefetching ซึง่ มีความสําคัญมากกับ processor หลายตัวมากกวา processor ตัวเดียว เพราะมีหนวย ความจํ ามากกวาและมันยอมใหสามารถ insert ที่ไหนก็ไดตามในโปรแกรม โดย ปราศจากากรเปลีย่ นแปลงผลของการคํานวณ ใน multiprocessor ในการเก็บขอมูลนัน้ ถาใช prefetches แลวตองเก็บขอมูลแบบ coherence เมื่อคาที่ไดนั้นถูก accessed จริงๆจากload instruction เมือ่ คาทีเ่ ขียนถูก return คากลับมา ถาคานัน้ ถูกเขียนหลังจาก prefetch แลว นีเ่ ปนคุณสมบัตทิ แ่ี ทจริงซึง่ cache coherence ไดใดเราสําหรับตัวแปรตางๆใน memory prefetch ไดนําคาของขอมูลใหใกลเคียงขึ้น และสามารถยืนยันไดวามีการใช หนวยความจําจริงๆในการ access ขอมูล คาของขอมูลทีไ่ ดรบั เขามาครัง้ ลาสุดเรียกวา nonblinding เพราะคาของขอมูลจะไมผูกติดกับ a local copy ซึง่ จะเปน incoherence ใน ทางตรงกันขาม prefetch จะเคลื่อนยายคาของขอมูลเขาไปไวใน a general purpose register เพือ่ ทําความสัมพันธใหขอมูล เพราะคาของ register จะเปนตัวแปรใหมตรงขาม กับ cache block ซึง่ จะเปน coherence copy ของตัวแปร nonblinding prefetch จะเก็บรักษาคุณสมบัตขิ องขอมูลตางๆในหนวยความจํา, ขณะที่ a blinding prefetch นัน้ จะมีลกั ษณะเหมือน register ทีท่ ําการ load เพราะมันจะมี การเคลือ่ นยายขอมูลจากทีอ่ ยูข อง coherence space ทําไม nonblinding prefetch จึงถูกวิพากษวจิ ารณ? Nonblinding นัน้ เหมือนจะ งายแตในบางกรณีเชน คาของขอมูลถูกเขียนโดย processor 1 ตัว และถูกใชโดย processor ตัวอืน่ ในกรณีนเ้ี ราตอง prefetch คากอนโดยเร็วทีส่ ดุ เทาทีจ่ ะทําได แตสมมุติ วาการประมวลผลลาชาดวยบางเหตุผลแลวนัน้ prefetchอาจจะนําคาเกาของขอมูลมาใช แทน แตถา prefetch เปนแบบ nonblinding แลว การทําสําเนาของขอมูลเกาจะถูก ประกาศใช เมือ่ คาถูกเขียนและถูกรักษา อยางไรก็ตามเมือ่ มีการใชงานไปก็จะไดคา ของขอมูลทีไ่ มตดิ ตอกันในการทีจ่ ะนําไปใช prefetching process เพราะจะเกิดจากการใชหนวยความจํายาวนาน การ prefetch จําเปน ตองรูค าสั ํ ง่ ทัง้ หมดเพือ่ ทีจ่ ะใชงานไดสะดวกในการใชประโยชน ถาตองการความ

สมบูรณซึ่งจะทําใหการติดตอกันสมบูรณและใชประโยชนกบั การ prefetchใน multiprocessors ไดมากขึ้น. การทีจ่ ะทําใหการ prefetch ดีขน้ึ นัน้ ตองการการติดตอชนิดเดียวกันซึง่ จะตรงกับที่ chche ตองการ จะเริม่ ตนการเขาถึงหนวยความจําทีส่ าคั ํ ญหลายๆที่ สาเหตุทจ่ี ะทําใหเกิด ปญหาคือ 1.ทีท่ โ่ี หนดตองการทีจ่ ะเก็บ track ในการเขาถึงหนวยความจําทีส่ าคั ํ ญหลายๆที่ ตัง้ แต การสงขอมูลกลับทีไ่ มเหมือนกันกับการสงขอมูลอยางเดียว ซึง่ สามารถลําดับไดโดยการ เพิม่ ตอทายไป หรือโดยการเก็บ address ของแตละ block ของหนวยความจําทีต่ อบรับ 2.กอนทีจ่ ะไดผลลัพธทต่ี อ งการโหนดนัน้ ตองแนใจวาไมมขี อ มูลอยูใ นนัน้ สําหรับ การที่จะตองการขอมูลซึง่ มีเหมือนกันจะทําใหเกิดการไมถกู ตองของ protocal โดย เฉพาะถาโหนดทีแ่ สดงผลลัพธนน้ั บันทึกลงผิดblock ขณะที่กาลั ํ งบันทึกขอผิดพลาดที่ สําคัญทัง้ ของprotocal และ directory protocalที่ผิดพลาดนั้น 3.คาดวาถาเพิ่มdirectory และ snooping controller ซึง่ จะหยุดการประมวลผลเมือ่ พบ การผิดพลาด และจะใหcacheควบคุมและรอการตอบรับเมือ่ มีการแกไขแลว และถา cacheไมไดเปนblockจะไมมกี ารหยุดของcacheและจะมีการเพิม่ การตองการกับการเพิม่ ของการประมวลผล Compiler Optimization and Consistency Model ดวยเหตุผลอีกมากมายกับการอธิบายของแตละรูปแบบของหนวบความจําที่ไมมีการ เปลี่ยนแปลงเกีย่ วกับขอบเขตของการ compiler ซึง่ สามารถทําตามการใชขอ มูลรวมกัน หมายถึงการใชขอ มูลพรอมๆกันมีโอกาสนอยมากทีจ่ ะเกิดขึน้ และโปรแกรมทีใ่ ชตรงกัน ในการ compiler ไมจาเป ํ นทีจ่ ะตองมีการรับขอมูลของกันและการบันทึกขอมูลทีใ่ ชรว ม กัน เพราะวาอาจเกิดผลกระทบกับการเปลีย่ นแปลงทีอ่ าจมีผลกระทบกับโปรแกรมได ซึ่งการปองกันทีง่ า ยเชนการติดตอกับการขอเนือ้ ทีใ่ นการใชขอ มูลรวมกันเพราะในการ ประมวลผลปกติจะมีการรับ-สงขอมูลกันและกัน หมายถึงการใชงานพรอมๆกันของ โปรแกรม เชน การเขียน High Performance FORTRAN(HPF) โปรแกรมตองการความ เขาใจทีต่ รงกันและรูถ งึ ความเขาใจทีต่ รงกัน ไมอยางนั้นผลลัพธที่จะไดก็จะไมเกิดขึ้น

Using Virtual Memory Support to Build Shared Memory โดยทัว่ ไปถาตองการทีจ่ ะใชaddressในnetwork การใช virual memory mechanism และ operating system (OS) จะเตรียมการใชงานรวมกันของหนวยความจําไว ซึง่ ตลอด 10 ปทผ่ี า นมามีรปู แบบอยูส องอยางคือ distributed virtual memory(DVM) และ shares virtual memory(SVM) สิง่ ทีท่ าให ํ คดิ เกีย่ วกับการสราง virtual memory เปน hardware คือความสามารถทีจ่ ะควบคุมการเขาถึงทัง้ การอานและบันทึก โดยการใชประโยชนใน ดานการตรวจสอบและปองกันการเขาถึงและoperating system นีย้ งั ใชประโยชนในการ ติดตอกันของขอมูล,สามารถสรางการติดตอกันได และการใชงานของ address ไขวกัน กับการกระจายของหนวยความจําของ multiple processors ใน SVM นั้น pages กลายเปนสวนของการติดตอกันมากกวา cache block และระบบ OS สามารถทีจ่ ะอนุญาติให page จําลองรูปแบบของการอานขอมูล,ใชประโยชน virtual memory ในการสนับสนุนการปองกัน page จากการบันทึกได เมือ่ มีการทีจ่ ะพยายาม บันทึกลงไปใน page ก็จะเกิดชองที่ operating system และ operating system จะประมวล ผลและสง message จาก operating system ไปทีแ่ ตละโหนดซึง่ ใช page รวมกันที่ ตองการ home node และ operating system นัน้ จะทําในทีซ่ ง่ึ โหนดจะมีการตอบรับจาก track ทีซ่ ง่ึ copy page นั้นไว สําหรับเครือ่ งทีท่ ํางานเหมือนกันในการติดตอกันในการใชหนวยความจํารวมกัน สิ่ง ที่แตกตางกันคือสวนทีต่ ดิ ตอกันใน page และ โปรแกรมทีใ่ ชประโยชนในการเพิม่ coherence algorithms มันเปนความแตกตางกันของประสิทธิภาพทีแ่ ตกตางกัน page มี ความสําคัญกวา cache block และ ความเปนไปไดทก่ี ารใชประโยชนจาก page จะไม สมบูรณและอาจลมเหลวเมือ่ มีการใชงานรวมกันมากๆ กอใหเกิดประสิทธิภาพทีไ่ ม สมําเสมอและบางเวลาอาจทํ ่ าใหประสิทธิภาพลดลง เพราะ coherence algorithms จะ สามารถทีจ่ ะถูกพัฒนาเพือ่ เพิม่ ความสามารถเมือ่ เปน software ผลลัพธของการรวมกันของ virtual memory กลายเปนการทําหนาที่ผานกันอยาง อิสระ จะทําใหการติดตอสือ่ สารขนาดเล็กแยลง และจะมีการติดตอสือ่ สารทีม่ โี ครงสราง ใหญมาก การกระจายของ virtual memory ในปจจุบนั มีการแขงขันกันซึง่ ตองพัฒนาใน ดาน hardware,coherence ,conherence memory เชนการกระจายการใชงานรวมกันของ โครงการการใชงานรวมกันของหนวยความจํา พิจารณาในสวน 8.4 โปรแกรมตอง

บันทึกสําหรับการติดตอการใชงานรวมกันของหนวยความจํา ไมสามารถทีจ่ ะทําใหเกิด ประสิทธิภาพในการใชงานรวมกันของ virtual memory ได มีหลายๆสิง่ ทีเ่ ปลีย่ นความสนใจในการทีจ่ ะใชการรวมกันของ virtual memory เชน การเพิม่ ทีด่ ที ส่ี ดุ และ การใชจํานวน hardware ทีน่ อ ยทีส่ ดุ ในการสนับสนุน ใน operating system เทคโนโลยี ของการ compiler ทีจ่ ะใชประโยชน page size ใหนอ ยทีส่ ดุ สามารถทีจ่ ะใหระบบสรุป ขอเสียของการติดตอสือ่ สารที่ page-level granularity ลักษณะของ software ทีส่ นับสนุน การใชงานรวมกันของหนวยความจําทีส่ าคั ํ ญและสวนที่สาหรั ํ บการคนหา และความ สามารถทีจ่ ะปฎิบตั หิ นาทีท่ ส่ี าคั ํ ญในการเพิ่ม hardware machanisms ในการใชประโยชน ไมสมบูรณของ machine เชน network ของ workstation หรือ ในการใหมกี ารใชงานรวม กันของหนวยความจําทีข่ ยายใหใหญมากหรือการเพิม่ ประสิทธิภาพทีจ่ ะเปนไปไดทจ่ี ะ สราง DSM cluster 8.8 Putting It Together: The SGI Challenge Multiprocessor ในสวนทีเ่ ราจะพิจารณาในการออกแบบการมีประสิทธิภาพของ silicon graphics challenge multiprocessor มีความตองการในสวนของ bus-based,cache-coherent design with a wide,high-speed bus,ความสามารถทีจ่ ะทําใหมีความเร็ว 36 MIPS R4400 กับ 4 processor on a board, และเพิ่มหนวยความจําเปน 8 ทาง16 GB ผลประโยชนทไ่ี ดจาก การออกแบบคือจะชวยเพิม่ ประสิทธิภาพของ microprocessor เปน R8000 (TFP) แตกบั bus ก็เหมือนกัน,หนวยความจํา,และ I/O system กับสอง processor ตอ board จะมีความ สามารถเทากับ 18 processor ในการพิจารณาควรมองที่ bus,coherence hardware และ synchronization support สามารถวัดความสามารถไดที่ 150-MHz R4400-based The Challenge System Bus ( POWERpath-2 ) การ challenge design มีความมุง หมายทีจ่ ะครอบคลุม 256 data bits และ 40 address bits และ bus 50 MHz เรียกทัง้ หมดนีว้ า "POWERpath-2" bus ซึง่ ติดตอกับอุปกรณ หลักๆและอุปกรณทส่ี นับสนุนการติดตอสือ่ สารกัน ดูรปู 8.42 เปนรูปของการติดตอกัน ของอุปกรณ POWERpath-2 เปนเครือ่ งมือทีจ่ ะบันทึกการผิดพลาดของการติดตอสือ่ สารกันโดย มีโครงสราง 4 สวน และ 3 สวนสามารถเห็นใน รูป 8.3 และอีก 1 สวนจะสง block ซึ่ง

วางเปลาไปแตไมสามารถไปที่ cache ได พืน้ ฐานของการติดตอกันที่ protocol จะยาว กวา protocol 3 สวนสามารถพิจารณาไดจากรายละเอียดตางๆ เมือ่ block ซึ่งไมมีการใช cache รวมกันในการอานขอมูล block นัน้ จะเก็บทีน่ น้ั ไว ถามีการอานขอมูลทีผ่ ดิ block โดยการใชงานรวมกัน การบันทึกลงกลับไปที่ block ก็จะไมสามารถทีจ่ ะบันทึกลงไปได ขอดีของprotocol คือไมมีการผิดพลาดที่มากมาย เมือ่ มีการเปลีย่ น block ใหมหี นาที่ dirty exclusive แมวาจะไมดีสาหรั ํ บการเขาถึงขอมูลทีใ่ หญทต่ี อ งการใชขอ มูลรวมกัน มัน สามารถเพิ่มประสิทธิภาพในการเขาถึงขอมูลไดแตไมแนนอนในการใชงานรวมกัน โดย เฉพาะขอมูลซึง่ มีคณ ุ สมบัตกิ ารใชงานรวมกันมากๆ ถา cache ทีผ่ ดิ พลาดไมตอ งการที่ จะบันทึกลง block นั้นใน cache ทีอ่ ยูป ระจํา การทํา clean exclusive นัน้ ตองแนนอน เพราะวา processor จะรูถ งึ การอานหรือบันทึกลง block และสามารถทีจ่ ะเปลีย่ นตามได POWERpath-2 จะสนับสนุนการแบงการติดตอและสามารถทีร่ อการอานทีส่ าคั ํ ญๆ ได รวมถึงการอานทีผ่ ดิ วงสามารถทีจ่ ะบันทึกลงได การรอการอานจาก track ทีละ processor และ resource identifiers ตองเปนตัวเลขทีไ่ มซากั ้ํ บตัง้ แต 0 ถึง 7 ซึง่ จะระบุทท่ี ่ี อานมา การใชประโยชนทไ่ี ดจะไดผลลัพธทเ่ี หมือนกัน ดังนัน้ processor จะรูว า เมือ่ ไหร ที่จะมีการตอบรับตามที่ bus ตองการ ถาทางทั้ง 8 ทีเ่ หมือนกันนัน้ สามารถทีจ่ ะใช ประโยชนไดจากการอานทีต่ อ งรอจะกลายเปนการอานไดตลอด เมือ่ มีการอานทีส่ าคั ํ ญ เสร็จสิน้ แลว ในสวนทายการพิจารณาความแตกตางทีไ่ ดจากการแบงการติดตอของ bus โดยเฉพาะ cache-coherence algorithm ในsection 8.3 จะทํางานทีไ่ มถกู ตองถามีการบันทึกและอาน เหมือนกับ cache block ทีแ่ ทรกอยูใ น bus การปองกันปญหา processor board จะตองไม ทําใหผลทีอ่ อกมาไมถกู ตองสําหรับ address ทีต่ อ งการอาน อีกทางที่ processor จะเก็บ track ทีต่ อ งการที่ 8 ทางทีจ่ ะอานถาเกิดการผิดพลาดขึน้ สําหรับการอานก็จะตองรอกอน processor จะหยุดและบันทึกก็จะชาลงไป ถา processor รับขอมูลทีอ่ า นทีพ่ บขอผิดพลาด ที่ address นัน้ ก็จะยังไมอา น ถาการรอชามากสามารถทีจ่ ะ"piggyback" ก็จะลดเวลาทีร่ อ ได เมือ่ มีการตอบรับจากการอานขึน้ bus ก็จะมีการติดตอทีก่ บั ขอมูลทีง่ า ยขึน้ และ สามารถทีจ่ ะใชประโยชนไดเปนทีน่ า พอใจ ในแตละทางในทางทีต่ ดิ ตอกันทัง้ 8 ทางอาจมีการขัดของได ถาตองการทีจ่ ะอานก็ไม ควรทีจ่ ะมีการตอบรับจาก memory จะทําใหใชเวลามากหรือนอยขึน้ อยูก บั ทีท่ ่ี processor

ทํางานดังนัน้ จะมีการวิเคราะหถงึ การเพิม่ การติดตอสือ่ สาร เมือ่ processor ทัง้ สองพบกัน ซึง่ cache ไมตอง block หรือมีการ clean state ใน block processor จะหยุดการติดตอใน สายนั้น ถา processor หยุดการสือ่ สารทัง้ หมด memory จะตอบรับ ตัง้ แตทร่ี วู า processor ทัง้ หมด copy are clean ไวแลว ถา processor มีหนาที่ในการ copy block มันก็จะตองการ bus และที่สําหรับขอมูลใน bus หลังจากนัน้ ถามีการหยุดการติดตออีก ถามีการตองการ ของ processor และ memory ในขอมูลเดียวกันและบันทึกขอมูลไป ในกรณีสดุ ทายตัง้ แต การแบง tags สําหรับการ snooping และการสงคาคืนจาก first-level หรือ second-level cache จะตองมีการคนหาขอมูล ซึง่ วิธที จ่ี ะ letting memory ใหตอบรับเมือ่ copy ผิด พลาดก็จะพิจารณาใหมกี ารเขาแทรกตลอดเวลา ขอมูลและ address buses แบงการตัดสินและการใชประโยชน write-back จะตองการ ใชประโยชนทง้ั สอง การอานทีต่ อบรับจะใชประโยชนเฉพาะ data bus และการผิดพลาด การอานใชประโยชนเฉพาะ address bus เริม่ ตนโดย bus จะแบงการตัดสินใจและการ กําหนดตางๆ การรวมกันของ bus ทีส่ ามารถทีจ่ ะทํางานไดในเวลาเดียวกันและการ ตองการอานขอมูลอันดับตอไปและการตอบรับทีร่ วดเร็ว POWERpath-2 ในแตละ bus ทีต่ ดิ ตอกันประกอบไปดวย 5 bus clock cycles ในทุกๆ 20 ns ซึง่ จะสามารถทีจ่ ะ execute โดยการควบคุมของ bus ในแตละ board ใน five-cycle สามารถทีจ่ ะ ตัดสิน,resolution,address,decode และ acknowledge ใน board bus ใน address ทีจ่ ะสง ใน five-cycle bus transaction ใน data bus 256 ิbits จะสงขอมูลทีอ่ ยูร ะหวางการปฎิบตั ิ ใน five-cycle bus tramsaction ดวยเหตุน้ี bus จะมีอตั ราการสงเทากับ (256/8) bytes/transfer * (1000/20) bus cycles/microsecond * (4/5) transfers/bus cycle = 1.28 GB/sec การติดตอทีไ่ ดจาก memory ในแตละ memory board จะเตรียมที่ 576 ิbit สําหรับ DRAMs (512 bits ของขอมูลและ 64 bit ของ ECC) และอนุญาติให single memory cycle เตรียมขอมูลสําหรับ two bus transfers ดวยเหตุนก้ี บั two-way interleaving ทีเ่ ปน single memory board สามารถทีจ่ ะสนับสนุนการติดตอของ bus ไดเต็มที่ ระยะเวลาทีใ่ ช

ไปทัง้ หมดก็จะเปนทีน่ า พอใจการอานขอผิดพลาด ที่ 128-byte ที่ cache line กับการไม แนนอนที่ 22 bus clock cycles คือ 1. เริม่ ตนอานขอมูลจากทางทีใ่ ชตดิ ตอสือ่ สาร 1 ทาง จาก five bus clock cycles 2. memory พรอมทีจ่ ะสงขอมูลที่ 12 bus clock cycles 3. ตอบรับการสงขอมูลทัง้ หมด ที่ 128 byte ในการตอบรับการติดตอ 1 ครั้ง หลังจาก นัน้ ทํา five bus clock cycles ดวยเหตุนก้ี ารเขาถึงขอมูลจาก processor จะอยูท ่ี 22 bus clock cycles คาดวาการเขา ถึงขอมูลจะเริม่ ตนเมือ่ address ไดรบั และตอบรับการติดตอไปสามารถทีจ่ ะติดตอกลับ ไปหลังจากทีส่ ง ขอมูลมา ซึ่ง bus จะแบงการติดตอเอง ดังนัน้ การตองการสิง่ อืน่ ๆและ การตอบรับสามารถทีจ่ ะดําเนินไประหวางที่ memory กําลังเขาถึงขอมูลนัน้ ดวยเหตุน้ี การคํานวณ secondary cache miss time จึงตองคํานวณเวลาทีใ่ ชในแตละ ขั้นตอนตั้งแต memory address เกิดขึน้ จนกระทัง่ เริม่ ตนอีกครัง้ หลังจากทีพ่ บขอผิด พลาด คือ 1. เริ่มตนคนหาที่ผิดพลาดและมีการที่ผิดพลาดใน memory โดย processor ประมวล ผลทัง้ 3 ขัน้ ตอนทีเ่ หลือคือ คนหาที่ผิดใน primary on-chip cache,เริม่ ตน secondary (offchip) cache access และคันหาที่ผิดใน secondary cache และ driving the complete address off-chip ใน system bus ในการประมวลผลใช 40 processor clock cycles 2. bus and memory มีระบบทีใ่ ช 22 bus clock cycles 3. ดึงขอมูลจาก cache line ที่ R4400 ทีห่ ยุดจนกระทัง่ cache block ไมเสียหายและ สามารถทีจ่ ะดึงขอมูลได ดังนัน้ จึงตองบวกเวลาทีใ่ ชในการดึงขอมูลไปกับเวลา miss time หนวยความจําจะติดตอกับ processor 64 bit และจัดการที่ external bus timing ที่ 50 MHz ซึง่ เหมือนกับ bus timing ดวยเหตุนก้ี ารดึงขอมูล 128-byte cache block ใช 16 bus clock cycles 4.ขัน้ ตอนสุดทายเพิม่ 10 processor clock cycles ทีใ่ ชประโยชนทด่ี งึ ขอมูลจาก primary cache และการเริม่ ตน pipeline เวลาทีใ่ ชสาหรั ํ บ secondary cache ทีม่ กี ารผิดพลาด ใช 50 processor clock บวก 38 bus clock สําหรับ 150 MHz R4400 ในแตละ bus clock (20 ns) ใน 3 processor clock (6.67 ns) ดังนัน้ miss time ใช 164 processor clock หรือ 1093 ns ตัวเลขทีใ่ ชในการ

พิจารณาใหญมากสําหรับ uniprocessor ทีม่ กี ารเขาถึง memory ที่สามารถพิจารณาไดจาก รูป 8.9 ซึง่ อยูใ นสวนของการพิจารณาประสิทธิภาพ Performance of the Parallel Program Workload on Challenge ในรูป 8.43 แสดงถึงประสิทธิภาพของ application ในการ running program กับ 16 processor ความเร็วที่ 16 processor เปลีย่ นจาก 10.5 เปน 15 เพราะเปนการแสดงถึงการ เพิ่มความสามารถของ memory ในรุน ของ uniprocessor มีการพัฒนาทีด่ กี วาปกติ ดวย เหตุนผ้ี ลของการศึกษาจะมีความสัมพันธกบั รูปแบบของ parallel จะเขาใจวาจะมีอะไรที่ ดีขึ้น และสามารถทีจ่ ะพิจารณาถึงสวนประกอบทีจ่ ะมีผลกับเวลาทีใ่ ชทง้ั หมด รูป 8.43 แสดงถึงความสามารถของ benchmarks ทีว่ ดั กับ processor 150-MHz R4400 รูป 8.44 แสดงถึงผลรวมของเวลาทัง้ หมดทีใ่ ชในการทํางานประกอบไปดวย CPU time,memory overhead or stall time และ synchronization wait time ทีข่ อ มูลในรูป 8.44 สามารถทีจ่ ะอธิบายคุณสมบัตทิ แ่ี ตกตางกันของโปรแกรม เชน FFT แสดงถึง linear speedup ทีส่ ามารถทีจ่ ะเห็นคาทีแ่ สดงถึงประโยชนของ processor ไดไกลเคียงกันมาก ทัง้ Barnes and Ocean ตองการการ drop-off ในการ speedup มีการเพิม่ ขึน้ เล็กนอยใน synchronization overhead, LU มี speedup ทีเ่ มือ่ มีการเพิม่ ขึน้ จะลดลงไดมาก ซึง่ จะ แสดงถึงการเพิม่ ของ synchronization overhead เปนทีน่ า พอใจมากกับการ synchronization overhead จะแสดงใหเห็นถึงความแนนอนในการ load imbalance ซึ่ง กลายเปนปญหาทีน่ า หนักใจระหวาง fixed problem size และ number of processors decreases ในรูปที่ 8.44 มีการบอกถึงการ speedup จะอันตรายถาใชประโยชนดว ยตัว ของมันเอง เชน Barnes and Ocean ตองใช speedup 16 processor แต ใน 16 processor มันมีการเสียเวลาในการใชถงึ 70% ของเวลาในการ Barnes และใน 43% ของเวลาใน Ocean Barnes จะมีผลมากเมือ่ ใชประโยชนจาก multiprocessor 8.9 Fallacies and Pitfalls การทีไ่ มเขาใจถึงขอบเขตของ parallel computing และยังมีปญ  หาทีซ่ อ นอยูซ ง่ึ ไม ครอบคลุมกับปญหาทัง้ หมดที่ designer หรือ ผูอ อกแบบไดพบการใหการรวมกันเปน

ขนาดใหญซง่ึ ครอบคลุม multiprocessor โดยเฉพาะผลในตอนสุดทายจะมีการผิดพลาด จะมากหรือนอยขึน้ อยูก บั การเลือกทีถ่ กู ตอง สิง่ ทีถ่ กู มองขามคือ การประมาณประสิทธิภาพของ multiprocessor โดยการ linear speedup กับ versus execution time กราฟ"Mortar shot"เปนการแสดงถึงประสิทธิภาพกับจํานวนของ processor ที่แสดง linear speedup และการ falling off ทีต่ อ งใชประโยชนทต่ี อ งตัดสินความสมบูรณของ parallel processor แมวา speedup เปนขอเท็จจริงของ parallel program มันไมมีขนาด ของประสิทธิภาพทีแ่ นนอน คําถามแรกคือกําลังของ processor จะวัดไดจากอะไร คือ ใช program ทีว่ ดั ขนาดของประสิทธิภาพโดย 100 Intel 8080s ในแตละรุนในการใชใน workstation โดยเฉพาะอยางยิง่ floating-point-intensive program เปน hardware ที่ ประมวลผลในสวนทีอ่ ยูภ ายนอกไดรว มกัน เปรียบเทียบ execution time ถาเปรียบเทียบ algorithms ในแตละความคิด เปรียบ เทียบ code ทีเ่ หมือนกันของ 2 ความคิดทีต่ อ งยุตธิ รรม แต parallel program ตองชาใน uniprocessor การกาวหนาของ parallel program ในบางเวลาก็จะมีการเพิม่ ของ algorithm ดังนัน้ การเปรียบเทียบกอนทีจ่ ะทํา parallel code ซึ่งตองดูความเหมาะสม ก็จะ ไมเปรียบเทียบ algorithm ทีเ่ หมือนกัน การสือ่ ถึงผลทีอ่ อกมาในรูปแบบ relative speedup และ true speedup ซึง่ จะใชประโยชนในบางเวลา ผลลัพธซึ่งจะเสนอ super linear ทีม่ ปี ระสิทธิภาพ เมือ่ โปรแกรมทีอ่ ยูบ น n processor มากกวา n time ซึง่ เร็วกวา uniprocessor ทีเ่ หมือนกันจะแสดงวาการเปรียบเทียบไมถกู ตอง แมวา กรณีเมือ่ real super linear speedup ตองมีการชนกัน เชน เมือ่ Ocean run บน 2 processor จะเกิดการ รวมของ cache ทีจ่ ะสราง super linear speedup (2.1 vs. 2.0) ซึง่ แสดงในรูป 8.43 ในทายทีส่ ดุ ก็จะเห็นในสวนกอนหนานี้ speedup ไมตอ งการการแสดงผลทีส่ มบูรณ ของประสิทธิภาพ ตัง้ แตprocessor ไมใชประโยชนในการทํางาน ดวยเหตุนใ้ี น algorithm หนึง่ ๆจะตองมี speedup ทีด่ ดี ว ย หลักทีผ่ ดิ คือ Amdahl's Law doesn't apply to parallel computers. ในป 1987 ไดมอี งกรทีเ่ รียกรองซึง่ Amdahl's Law ซึง่ ตองแตกออกไปกับความคิด MIMD มันมีจุดมุงหมาย อยางไรก็ตามกฏนัน้ ก็ถกู ทําลายลงเพราะขาดความระมัดระวัง

ในทีท่ ่ี program มีขีดจํากัดของประสิทธิภาพ และก็เขาใจตามทีเ่ ห็น และ Amdahl(1967) เขาไดบอกวา A fairly obvious conclusion ehich can be drawn at this point is that the effort expended on achieving high parallel processing rates is wastd unless it is accompanied by achievements in sequential procesing rates of very nearly the same magnitude ( p.483) การแปลความหมายของกฎตัง้ แตเริม่ ตนในทุกๆ program ตองเรียงตามลําดับ มันมีขีด จํากัดของการใชประโยชนของ processor โดยการแสดง linear speedup กับ 1000 processor ทัง้ หมดเปนความหมายของ การแปลของ Amdahl's Law โดยพื้นฐานของ statement ซึ่ง Amahl's Law ไดให "ovrcome"ทีต่ อ งใชประโยชนจาก ขนาดของ speedup การบอกถึงขนาดเครือ่ งหมายทีต่ อ งรูถ งึ ขนาดของขอมูลซึง่ 10000 time ทีใ่ หญมากและเปรียบเทียบกับuniprocessor และ parallel execution times ของ ขนาดทีบ่ อกไว สําหรับรายละเอียดของ algorithm ทีเ่ รียงตามลําดับตามทางของ program ซึง่ เปนคาของขนาดทีอ่ สิ ระ เราสามารถทีจ่ ะบอกการผิดพลาดทีถ่ กู ตองได ปญหาอีกอยางทีเ่ ปนปญหาซึง่ ไดผล ลัพธทผ่ี ดิ ไปจากความจริงซึง่ พิจารณาไดจากรูป 8.7 หลักทีผ่ ดิ คือ multiprocessor are "free". การแปลความหมายทีม่ คี วามหมายทีแ่ ตกตางกันอยู 2 ขอและทั้ง 2 ขอก็เปนการแปลที่ ผิดทัง้ คู ขอแรกใหรปู แบบของ muitiprocessor ทีม่ สี นับสนุนการทํางานของ snooping cache สามารถทีจ่ ะสราง small-cache,bus-based multiprocessor ที่ไมมีการเพิ่มราคาขึ้น อีก ผูอ อกแบบทัง้ หลายตางก็เชือ่ เหมือนกันดวย การเขาใจถึงการไมทํางานนัน้ ตองมีการเปรียบเทียบกันของลักษณะการออกแบบกับ ขอบเขตของ multiprocessor ทีอ่ อกแบบมาวาสามารถทีจ่ ะใชไดในระดับไหน(2-4 processor) ทัง้ 2-4 processor นัน้ ถูกออกแบบใหมกี ารตองการชนิดของ bus และลักษณะ การควบคุมซึง่ มีความซับซอนมากกวาการตองการ memory controller ของ uniprocessor ยิ่งกวานั้นเวลาที่ใชในการเขาถึงหนวยความจําจะรวดเร็วมากในกรณีทเ่ี ปน uniprocessor ตั้งแตการประมวลผลทีส่ ามารถทีจ่ ะติดตอไดโดยตรงกับหนวยความจํากับ single-master

bus ดวยเหตุนจ้ี งึ ไดผลลัพธทเ่ี ทากับปกติไดประสิทธิภาพทีเ่ ทาเดิมแตราคาทีถ่ กู กวากับ การติดตอ 1-processor เมือ่ มี multiprocessor เล็กมาก ทัง้ หมดนีก้ ลายเปนทีน่ ยิ มในป 1980 ทีเ่ ชือ่ ในการออกแบบ multiprocessor ในการมี ความรูส กึ ทีด่ ซี ง่ึ จะรวดเร็วมากในการสราง MP จาก state-of-the-art microprocessor และรวดเร็วในการ update กับ newer processor ดวย ในความคิดของการที่จะละทิ้ง cache เพราะความยุง ยากและการทีม่ กี ารแขงขันกันผลิต high-bandwidth,low-latency memory system ซึง่ มีการเจริญกาวหนาทีเ่ ร็วมาก นอกจากนัน้ ยังมีการพยายามทีจ่ ะเพิม่ software ,operating system and debuggers สําหรับ parallel system หลักที่ผิดคือ Scalability is almost free ผลสุดทายของขนาดของ parallel computing ทีต่ อ งมีการมองมากๆและดูในแตละ สวนของ high-end ทีม่ กี ารพัฒนาตัง้ แตป 1980 จนกระทัง่ สามารถทีจ่ ะครอบคลุมทัง้ หมดซึ่งสามารถที่จะสรางขนาดของ multiprocessor และงายทีจ่ ะทํางานดวยขนาดที่เล็ก กวาของ processor ทีจ่ ะนับจํานวนทัง้ หมดทีเ่ ปนจริงและใน interprocessor จะมีการติด ตอสือ่ สารกับ network ซึง่ มีการติดตอทีน่ า เชือ่ ถือได ราคาของขนาดของ processor ทีเ่ ห็นทัง้ หมดมีระยะของการออกแบบทีม่ ขี ดี จํากัด ใน MP ทีม่ ขี นาดเล็กๆ(2-8 processor) กับ bus-based system ซึ่งขนาด( 16-32 processor) แม วาใน 64 bit bus จะเพียงพอกับ4 processor แตในขนาดทีใ่ หญกวาก็จะครอบคลุมมาก กวา เชน higher bandwidth bus สําหรับผูใชซึ่งไดซื้อระบบขนาดใหญก็จะได highperformance bus SPARCCenter 2000 มีการออกแบบ address โดยการใช bus multiple กับ narrower buses ในระบบทีม่ ขี นาดเล็กใชเฉพาะ bus 1 bus ก็พอ แตในระบบขนาด ใหญตองใช bus 2 ิbus การแทรกหนวยความจําจะมีการสงไปพรอมกันทง 2 bus ขนาดที่มีการสรางใหใชไดตามขอบเขต คือการสราง software application ซึ่ง สามารถทีจ่ ะดึงขอมูลไดพรอมกันและสามารถทีจ่ ะใชรว มกันได การรูข นาดทีแ่ ทจริง ของ application ในอนาคตการ complier จะมีการพัฒนาขึ้นและมีเครื่องมือที่ วิเคราะหปญหาได สิง่ ทีถ่ กู มองขามคือ Not developing the software to take advantage of, or optimize for ,a multiprocessor architecture

เปนเวลานานมากทีม่ กี ารใช software หลังจากนัน้ ก็เปน parallel machines เพราะ software ถามีขอผิดพลาดก็จะแกไขยากมาก เชน bus-based multiprocessor แสดงใหเห็น ถึงความแตกตางของการพัฒนา software สําหรับ multiprocessor ทีใ่ หมๆซึง่ จะให ประโยชนมากกับผูอ อกแบบและมีอปุ กรณทเ่ี ปน software ทีใ่ ชกบั multiprocesor SUN SPARCCenter เปน bus-based machine ทีเ่ ปน bus 1 or 2 bus หนวยความจําจะ กระจายไปทัว่ board ซึ่ง procesor จะสามารถที่จะสราง block ทีต่ รงกันกับ processor, cache and memory ในโครงสรางของ multiprocessor เหมือนกับการเขาถึงขอมูลในทีท่ ่ี เปนทีข่ องตนเองสามารถทีจ่ ะเขาถึงไดรวดเร็วและยังสามารถใชประโยชนจาก bus เขา ถึงหนวยความจํา ระบบการจัดการ SUN อยางไรก็ตามไมสามารถทีจ่ ะใชรว มกับ NUMA (non-uniform memory access) รวมถึงผลทีเ่ กิดขึน้ จากการควบคุมทีซ่ ง่ึ memory ขอเนือ้ ทีไ่ ว ถา memory มีการขอเนือ้ ทีแ่ บบสุม เมือ่ มีการทํางานทีส่ มบูรณกจ็ ะเหมือนกับ application ปกติทไ่ี ดความแตกตางของประสิทธิภาพ และยังไดประโยชนในการใชงาน อีกดวย จากตัวอยางแสดงใหเห็นถึงปญหาซึง่ สามารถทีจ่ ะเกิดขึน้ เมือ่ software ทีอ่ อกแบบมา สําหรับ uniprocessor ติดตอกับ multiprocessor ใน SGI ทีเ่ ปนระบบการจัดการทีป่ อ งกัน โครงสรางของขอมูลกับ single lock ใน uniprocessor ทีเ่ กิดปญหากับประสิทธิภาพ ใน multiprocessor มันสามารถทีจ่ ะกลายเปนประสิทธิภาพหลักสําหรับบางโปรแกรม การ พิจารณาโปรแกรมซึง่ ใชประโยชนกบั page ซึง่ เริม่ ตนที่ start-up กับ UNIX ก็ใชการขอ เนือ้ ทีเ่ หมือนกัน สมสุตวิ า โปรแกรมเปน parallel ซึ่ง multiprocessor ก็มกี ารขอเนือ้ ทีข่ อง page เพราะวา page ตองการการใชประโยชนจาก page table ซึง่ ปองกันการใช ประโยชนและ OS จะยอมให multiprocessor ติดตอกับ OS จะเรียงลําดับการประมวล ผลทัง้ หมดและขอเนือ้ ทีข่ อง page สิง่ ทีถ่ กู ทองขามคือ Neglecting data distribution in a distributed shared-memory machine การพิจารณา Ocean มีเครือ่ งหมายทีบ่ อกการทํางานใน 32-processor DSM ทีร่ ปู 8.26 แสดงอัตราการผิดพลาด 3.1% เพราะวาทางทีใ่ ชประโยชนมกี ารคํานาณการขอเนือ้ ทีแ่ ละ 2.5% เปนการเขาถึง local capacity misses และ 0.6% เปนการ communication miss ที่

ตองการการเขาถึงขอมูลทีม่ พี นั ธะทีละทาง ใน 30-cycle local mwmory access cost และ 100-cycle remote memory access cost การเฉลีย่ ของการ miss ที่ 43.5 cycle ถาทางทีใ่ ชในการขอเนือ้ ทีม่ กี ารตองการโดย round-robin allocation ของแตละ page คาดวา 1/32 จะมีขอผิดพลาดและอัตราการผิดพลาด 3.1% * 1-32 = 0.1% และการผิด พลาดภายนอก cache เปน 1.5 และ 45% ทีใ่ ชการอางคําสั่ง การขอเนือ้ ทีจ่ ะได 1.5 + 45% * 3.1% * 96.8 1.5+1.35 2.85 --------------------------------- = ----------- = ------ = 1.35 times faster 1.5 + 45% * 3.1% * 43.5 1.5+0.61 2.11 หลักทีผ่ ดิ คือ Linear speedup are needed to make multiprocessor cost-effective จะมีความครอบคลุมซึง่ ประโยชนทไ่ี ดรบั หลักๆของ parallel computing จะเรียกวา "shoter time to solution" ซึง่ เร็วกวา uniprocessor โดยทัว่ ไปอยางไรก็ตามเหมือนกับการ มอง parallel processor ไมสามารถทีจ่ ะ cost-effective ที่ uniprocessor ไดและไม สามารถทีจ่ ะมี speedup ทีส่ มบูรณได เหตุผลที่เปนเพราะวาราคาของ machine ที่ใช processor นอยกวา linear speedup หมายถึง performance/cost ทีล่ ดลง ทําให parallel processor มี cost-effective ทีน่ อ ยกวาประโยชนจาก uniprocessor ปญหาทีเ่ กิดขึน้ คือราคาทีไ่ มเฉพาะรูปแบบของ processor ทีน่ บั แตยงั มีการใชงานของ memory อีกดวย ผลทีท่ ําให memory ในระบบมีราคาเปนจุดชี้ โดย Wood and Hill ในป 1995 และสามารถทีจ่ ะใชประโยชนจากการแสดงผลเมือ่ สมบูรณได การเปรียบเทียบ ของ uniprocessor sever กับการแขงขันใช DM กับ multiprocesor ที่ใช XL ในสวน rackmounted multiprocessor สามารถที่จะพิจารณาไดในรูป 8.8 สมมุติวาการคํานวณของพวกเรารองขอพืน้ ที่ 1 gb ในหนวยความจําบน เครือ่ งทัง้ สอง แลวคาของ DM เปน $ 138400 ขณะที่คาของ Challenge XL เปน $ 181600 + $ 20000 * p สําหรับคาของตัวเลขทีต่ า งกันของโปรเซสเซอร เราสามารถ คํานวณวาคาอะไรเปนความเร็วที่เพิ่มขึ้น ที่จําเปนในการใช parallel processing บน XL ไดคาประสิทธิภาพกวาคาของ processor ตัวเดียว สําหรับตัวอยาง คาของ processing 8 บิต XL เปน $ 341600 ซึ่งประมาณ 2.5 เทา สูงกวา DM ดังนัน้ ถาเรามีความเร็วทีส่ งู ขึน้

บนprocessor 8 บิต ทีม่ ากกวา 2.5 เทา multiprocessor จะมีประสิทธิภาพมากกวา processor ตัวเดียว ถาเราสามารถไดรับความเร็วที่เพิ่มขึ้น ระบบ XL processor 8 บิต จะได รับมากกวา 3 เทาของประสิทธิภาพ สวนตางๆ นีจ้ ะดีกบั processor สวนมาก บน processor 16 บิต เราไดรบั ความเร็วทีเ่ พิม่ ขึน้ เพียง 3.6 หรือนอยกวา 25% ของประสิทธิ ภาพ การทํา Multiprocessor มีคาประสิทธิภาพเทากับ โปรเซสเซอรตวั เดียว การใช multiprocessor อาจกอใหเกิดการเพิม่ ของหนวยความจํา แมวาตัว เลขนีอ้ าจดูเล็กนอยสําหรับ shared-memory architecture เครือ่ ง processor 8 บิต ตองการ ไดรบั ความเร็วทีเ่ พิม่ ขึน้ 3.2 เทาเพือ่ ไปยัง เบรค และ เครือ่ ง processor 16 บิต ตองการได รับความเร็วทีเ่ พิม่ ขึน้ 4.3 เทาเพือ่ ไปยังเบรค XL สามารถทีจ่ ะเปนคาผลลัพธทแ่ี ทจริง เมื่อเทียบยอนกลับ headless workstation สําหรับตัวอยางคาของฟงกชน่ั สําหรับ Challenge S ซึง่ สามรถมี 256 mb ของหนวยความจํา Cost ( l,m) = $ 16600 + $ 100 * m สําหรับปญหาทีพ่ น้ื ทีท่ เ่ี หมาะสมมีเพียงเล็กนอยใน 256 MB ของ หนวยความจําบนเครือ่ งทัง้ สอง XL เบรคคู กับความเร็วทีเ่ พิม่ ขึน้ ของ 6.3 บน processor 8 บิต และ 10.1 เทาบน processor 16 บิต ในการเปรียบเทียบ ราคา และ ประสิทธิภาพของเครือ่ งคอมพิวเตอรทง้ั สอง คุณอาจจะทําใหแนนใจ โดยการเพิม่ การกําหนดความแมนยําของระบบคาผลราม ทัง้ หมด และ ประสิทธิภาพทีเ่ ปนความสําเร็จ สําหรับ application มากมาย กับ ความตองการพืน้ ทีห่ นวยความจําทีใ่ หญ ดังนั้นการเปรียบเทียบความสามารถทําไดอยางรวดเร็วโดยการเพิม่ ความสวยงามของ การใช multiprocessor Concluding Remarks ความฝนของการสรางคอมพิวเตอร โดยการรวมโปรเซสเซอรอยางงายๆ มีมาตั้ง แตเริม่ มีคอมพิวเตอร อยางไรก็ตามความคืบหนาในการสราง และการใชอยางไดผล และ ประสิทธิภาพของ parallel processor เปนไปอยางชาๆ อัตราความคืบหนาไดถกู จํากัด ขอบเขตโดยปญหาความยากของ software อยางไรก็ดกี ารประมวลผลอันยาวนานของ สถาปตยกรรมทีเ่ จริญขึน้ ของ multiprocessor ทีส่ ง เสริมความสามารถในการใช และ แก

ไขประสิทธิภาพ พวกเรามีการพูดคุยมากมายเกีย่ วกับ software challenge ในบทเรียนนี้ รวมทัง้ ความยากของการเขียนโปรแกรม ซึง่ ไดความเร็วทีเ่ พิม่ ขึน้ ตามกําหนดเวลาขอ งกฏ Amdahl ความคืบหนาใน 10 ปทผ่ี า นมา ผลลัพธบางอยางเปนการมองไปในทางที่ ดีเกีย่ วกับอนาคตของ parallel processing และ multiprocessor การมองในแงดเี ปนพืน้ ฐานบนตัวเลขของการปฏิบตั เิ กีย่ วกับความคืบหนา และtechnology ทีย่ าวนาน 1. การใช parallel processing ในบางขอบเขตเริม่ ตนจากความเขาใจทีน่ า เชื่อถือเปนอยางแรก นีเ้ ปนขอบเขตของ วิทยาศาสตร และ วิศวกรรม คอมพิวเตอร ขอบเขต application นี้ มีขอบเขตความกระหายสําหรับการคํานวณ สวนมาก มันยังคงมี application มากมาย ซึง่ มี parallelism ธรรมชาติมาก ความสําคัญอื่น พืน้ ที่ application เปนฐานขอมูลตารางทีใ่ หญ และระบบ การประมวลผลการจัดการ ขอบเขต application นี้ ยังคงมี parallel processing ของการขอรองอิสระ แตมันตองการคํานวณทีใ่ หญ เหมือน กับการไมเห็นดวยทีไ่ ปยังการเขาสูร ะบบ เก็บตารางขนาดใหญ ซึง่ มี ความเขาใจกันนอยมาก 2. วิธีหนึง่ ของอีกหลายทางในการสราง computer ซึง่ มีประสิทธิภาพที่ ไดรบั จาก microprocessor ตัวเดียว โดยการสราง multiprocessor ซึ่ง อํานาจเครื่องหมายราคาและประสิทธิภาพ ของผลลัพธสวนใหญของ multipocessor 3. Multiprocessor เปนประโยชนสงู สุด สําหรับmultiprogramened workload ซึง่ เปนใหขอบเขตในการใชของ mainframes และบริการ ทีใ่ หญ รวมทั้งขอมูลบริการ ซึง่ เลือกสรรจัดชนิดของ multiprogrammed workload ในอนาคต workload อาจจะประกอบ กันเปนสวนทีใ่ หญทเ่ี ปนทีต่ อ งการของตลาด สําหรับเครือ่ งพีซปี ระ สิทธิภาพสูง เมือ่ workload ตองการไปยังหนทางทีก่ าหนดไว ํ เหมือนกวาทีเ่ ก็บ file หรือ สามารถแบงเวลาในหนทางหนึง่ ๆ ใน

อนาคต OS software ที่ตอ งการการกระทําทีม่ ปี ระสิทธิภาพ multiprogrammed workload เมือ่ จะเขามามีบทบาท ขณะทีม่ ผี ลลัพธไปในทางทีด่ ี เกี่ยวกับการเติบโตทีส่ าคั ํ ญของ multiprocessor พืน้ ทีม่ ากมายของ palallel architecture ทีเ่ หลือก็ไม ชัดเจน

อนาคตของสถาปตยกรรม MPP Small-scale multiprocessor สรางโดยใช snooping-bus schemes เปนคาผลทีไ่ ดสดุ ทาย เมือ่ เร็วๆ นี้ microprocessor ประกอบดวย logic มากมาย multiprocessor การใช DMS technology มันเปนความเปนไปได to configure เชน ปุม processor 2-3 ตัว ในโครงสรางติดตอกัน ดวยจํานวนเล็กๆ ของ additional hardware มันเปนเวลาทีไ่ มสมควรทํานาย ดังนัน้ สถาปตยกรรมจะสวนสําคัญบริเวณ สวนกลางของ processor ทีใ่ ชนบั (16-64) แตมนั ปรากฏทีเ่ วลานีซ้ ง่ึ ใกลเขามานีเ้ ปนสิง่ ทีด่ งึ ดูดใจ อะไรเปนความไมชดั เจนในปจจุบนั ทีเ่ ครือ่ งทีใ่ หญทส่ี ดุ จะมีรปู ทรงอยางไร ความยากทีผ่ อู อกแบบประกอบดวย การเทียบเคียงตลาดเล็กๆ สําหรับ เครือ่ งขนาดใหญ และความตองการสําหรับเครือ่ ง ซึ่งขนาดของ processor count ที่ ใหญจะเปนคาผลทีไ่ ดรบั ที่ lower processor count ซึง่ เครือ่ งสวนมากจะถูกขาย ใน ปจจุบันเกิด 4 ทาง เลือกทีแ่ ตกตางกัน สําหรับเครือ่ งทีม่ ขี นาดใหญ คือ 1. เครือ่ งทีม่ ขี นาดใหญ ซึง่ เปนขนาดทีเ่ กิดขึน้ อยางงายๆ การใชการติดตอซึง่ กันและกัน และเทคโนโลยีทค่ี วบคุมการติดตอ นีเ้ ปนสิง่ ทีพ่ ฒ ั นาจนคลายเครือ่ ง Intel paragon การใชขอความสงผานสิ่งที่ใกลเขามา และ Cray T3D การใชหนวยความจําแบง สวนทีอ่ ยูน อก cache ทีต่ ดิ ตอกันมี 2 สิ่ง ทีส่ าคั ํ ญทีใ่ ชในการออกแบบ 1. เครือ่ งไมไดผลประโยชนอยางเต็มที่ ที่ตารางเล็กๆ นี้ซึ่งคาของ scalability ไมมีคา 2. เครื่องเหลานีร้ ปู แบบโปรแกรม ซึง่ ไปดวยกันไมไดในระดับทีต่ า ง กัน

2. เครื่องทีม่ ขี นาดใหญทม่ี รี ปู ทรงจากเครือ่ งในกลุม กลางดวยการรวมกันและพืน้ ฐานเทคโนโลยี การติดตอของเครือ่ ง กลุม ทีใ่ กลเขามานีจ้ ะใชคา ของประสิทธิภาพ ตลอดจนใชคา optimize โดยการสราง block ผลเสียของการพยายามทีจ่ ะสรางเครือ่ ง extend นี้คือ การออกแบบผูซ อ้ื และการ ติดตอซึง่ กันและกันเปนทีต่ อ งการ ทางเลือกรูปแบบ program สามารถเปรียบจากการ แบงหนวยความจํา ไปยังการสงผานขอมูล หรือไปยังการเปลีย่ นแปลงทีต่ า งกัน บน การแบงพืน้ ทีใ่ นหนวยความจํา เหมือนกับ share memory ซึง่ อาจจะเปนผลรวมทีม่ อง ไมเห็น ขอเสียของการออกเสียปดความสามารถในรูปแบบ program ขอดี คือ เครือ่ งทีม่ ี ขนาดใหญสามารถใช off-the-shelf technology ไดมาก ประกอบดวยพืน้ ฐาน network ตัวอยางอืน่ ๆ ของเครือ่ งประเภทนีเ้ ปน SGI Challenge array ซึง่ เปนการสรางจาก SGI Challenge machine และใชพื้นฐานสําหรับ HPPI สําหรับติดตอซึง่ กันและกัน สรุปวา ในเครือ่ งในรุน นีด้ งึ ดูดใหทดลอง 3. การออกแบบเครือ่ งซึง่ ใช off-the-shelf uniprocessor node และการติดตอซึง่ กันและกันของลูกคา ประโยชนของเครือ่ งนี้ คือคาของผลที่ไดรับของ uniprocessor node มาตรฐาน ซึง่ ใหบรรลุลง work station ขอเสีย คือ รูปแบบ program จะมีความนา เชื่อถือในการสงผานขอความนอยมาก IBM SP-2 เปนตัวอยางทีด่ ที ส่ี ดุ ในปจจุบนั นี้ 4. การออกแบบเครือ่ งโดยใช สวนประกอบ off-the-shelf ทัง้ หมด ซึ่งราคาตํา่ การลําลางคําโกหกในเรือ่ งการใชเทคโนโลยี ที่ซ้ือขายกันทุกที เครือ่ งประเภทนีจ้ ะใช การสงผานขอมูล และติดตอกันเมือ่ มี higher latency และ lower bandwidth กวาในการ ออกแบบทางเลือกทุกวันนีเ้ ครือ่ งทีส่ รางเหมือนกับ workstation cluster หรือ NOWS (network of workstations) หรือ COWS(clusters of workstation) คือ VAX cluster

อนาคตของสถาปตยกรรม microprocessor สถาปนิกใช techniques ที่ยุงยากทีพ่ ยายามใชประโยชนจาก instructionlevel parallelism มากมาย เหมือนทีเ่ ราเห็นใชในบทเรียน โอกาสสําหรับทีจ่ ะพบการเพิม่ จํานวนของ instruction-level parallelism ในแบบๆหนึง่ ซึง่ เปนผลประโยชนทถ่ี กู จํากัด ไว เชนเดียวกันกับทีม่ คี วามยากของปญหาทีเ่ พิม่ ขึน้ ในการสรางลําดับชัน้ หนวยความจํา

สําหรับสําหรับโปรเซสเซอรทม่ี ปี ระสิทธิภาพสูงแนนอนวา technology ทีด่ ขี น้ึ อยางตอ เนือ่ งจะสามารถทําใหเราพัฒนาสัญญาณนาฬิกาอยางตอเนือ่ ง แตการใช technology ทีด่ ี ขึ้นซึ่งเพิ่มความเร็ว gate เพียงอยางเดียว ไมเพียงพอกับโรงงานทีม่ ปี ระสบการณในการ เพิ่มประสิทธิภาพใน 10 ปทผ่ี า นมา ความรวดเร็วของประสิทธิภาพจะขึน้ อยูก บั การเพิม่ พื้นที่ในพื้นที่ silicon ซึ่งจะเติบโตรวดเร็วอยางตอเนือ่ งกวา ความเร็วตามปกติของ process technology โชครายสําหรับ 5 ปทแ่ี ลวในการเพิม่ ประสิทธิภาพทีล่ ม เหลวในการใช พื้นที่ของ silicon , External conection และ power การเติบโตของประสิทธิภาพเพิม่ ขึน้ ในกลางป 1990 แต พวกเราไมสามารถสนับสนุนประสิทธิภาพทีร่ วดเร็วใหดขี น้ึ นอก addressing ที่เกีย่ วของ ที่เปลีย่ นแปลงใหมใน สถาปตยกรรมคอมพิวเตอร ยิ่งกวานั้น พวกเราไมตอ งการออกนอกกฏความเปนไปไดของความเจริญ กาวหนาทางวิทยาศาสตรในการออกแบบ uniprocessor ในป 1980 ผูค นมากมายทํานาย จุดสิน้ สุดของความเจริญกาวหนาในประสิทธิภาพของ uniprocessor เพียงแคเห็น technology RISC และ การเจริญกาวหนาของประสิทธิภาพทีไ่ มเปนอิสระเฉลีย่ 1.6 เทา ตอป Evolution versus revolution and challenges to paradigm shift in the computer industry แนวคิด RISC อยูใ กลกบั สวนกลางของ spectrum บริษทั สวนมากทีม่ ี RISC ถูกปดภายใน 10 ปทผ่ี า นมา multiprocessor สวนมากมีการดูแล revolution จุด สิน้ สุดของspectrum กัเครือ่ งทีม่ ขี นาดใหญทส่ี ดุ (MPPS) ทีเ่ ปน revolution มากกวาอยาง อื่น โปรแกรมสวนมากทีใ่ ช multiprocessor เหมือนกับเปรียบเครือ่ งจักรทีโ่ ดนเขียน โดย เฉพาะสําหรับกับเครือ่ งรุน นัน้ ถาไมสาหรั ํ บชนิดสถาปตยกรรม ขอรองถามสําหรับผูอ อกแบบ hardware และ software ทีจ่ ะเสนอ multiprocessor และ parallel processing ซึง่ กลายแบบอยางนอยกวาขอยกเวนเปนความ กระจัดกระจายไปยังฐานทีม่ น่ั คงของโปรแกรมมีความเปนไปได 2 ทาง ตัวอยางนี้ สามารถทําใหงายขึ้น ถาparallel processing ใหทางเลือกในการเพิม่ ประสิทธิภาพเทานัน้

และถาความกาวหนาทางเทคโนโลยี hardware และ software สามารถลดทางลาดใหนอ ย ลงซึง่ สามารถเคลือ่ นทีไ่ ปยัง parallel processing เพือ่ ไมใหตวั เลขทีเ่ ล็กของ processor เปน evolutionary มากกวานี้

ประวัติและสิ่งที่เกี่ยวของ มีจํานวนของเรือ่ งราวมากมายใน parallel processing ในสวนนีเ้ ราแบง ออกเปน 2 กรณีคอื time period และสถาปตยกรรม พวกเราจะเริม่ ดวย SIMD approach และ Illiac IV แลวพวกเราจะกลับมาพูดคุยสัน้ ๆ เกีย่ วกับเครือ่ งในยุคแรก ๆ และจะพูด คุยเกีย่ วกับบางอยางของ great debates ใน parallel processing หลังจากนัน้ พวกเราจะพูด คุยถึงเครือ่ งในยุคปจจุบนั และพูดคุยเกีย่ วกับความกาวหนาทีเ่ กิดขึน้ เปนเรือ่ งสุดทาย

ความเจริญและความตกตํ่าของเครื่อง SIMD รูปแบบ SIMD เปนหนึง่ ในรูปแบบเริม่ แรกของ parallel processing ถา นับถอยหลังไป SIMD จะเปน multiprocessor ขนาดใหญรุนแรก Illiac IV เปนแนวคิด หลักในเครือ่ ง SIMD เหมือนกับเครือ่ ง SIMD รุน ใหมทม่ี คี าสั ํ ง่ เดียวซึง่ ปฏิบตั กิ ารเปน data item มากมายและใช function unit มากมาย ในความคิดเริม่ แรกของคอมพิวเตอรแบบ SIMD เปนของ Unger [1958] และ Slotnick,Borck, และ Mcreynolds [1962] Slotnick’s Solomon ออกแบบพื้นฐาน ของ Illiac IV บางทีการเสียชือ่ เสียงสวนมากเปนผลงานของ super computer ขณะที่ ความสําเร็จไดผลักดันเทคโนโลยีซง่ึ พิสจู นวา ใชไดในผลงานชิน้ ลาสุด ราคาทีถ่ กู ยกให สูงขึ้นจาก $ 8 ลานในป 1966 จนถึง $ 31 ลาน ในป 1972 แมวาจะสรางใน quarter ของ การวางแผนเครือ่ งนีเ้ ทานัน้ ประสิทธิภาพทีด่ ที ส่ี ดุ 15 MFLOPS เทียบกับ 1000 MFLOPS เครือ่ งคอมพิวเตอรใชเวลามากกวา 3 ป กอนทีม่ นั จะมีประโยชน เหตุการณ นีเ้ กิดขึน้ อยางชา ๆ ดวยการตรวจสอบของ SIMD กับ Danny Hillis [1985] นํารูปแบบ นีก้ ลับมาใชในเครือ่ ง connection ซึง่ มี 65636 1-bit processor เครือ่ ง SIMD เกิดจากการผสมคําสั่ง SISD และคําสั่ง SIMD มี SISD host computer ปฏิบตั กิ ารเหมือนกับ branches และ address ซึง่ เมือ่ ตองการระบบปฏิบตั ิ การทีค่ ลายคลึงกัน คําสั่ง SIMD ถูกแพรไปทัว่ execution unit แตละ execution unit มี

SIMD และsetมันไวท่ี register สําหรับการเปลีย่ นแปลงเฉพาะตัว execution unit สามารถทีจ่ ะไมกระทําคําสั่งระหวาง SIMD เครือ่ ง SIMD ขนาดใหญมนั จะติดตอซึง่ กัน และกันหรือการติดตอ network ไปยังการเปลีย่ นขอมูล processing element SIMD ทํางานไดดีที่สุดใน dealing กับ array ใน for loop Hence มีความ เหมาะสมสําหรับ massive parallelism ใน SIMD SIMD มีผลเสียทีส่ ดุ ใน case statement สถานทีซ่ ง่ึ แตละ execution unit อาจจะกระทําการปฏิบตั กิ ารทีแ่ ตกตางบนขอ มูลของมันขึน้ อยูก บั ขอมูลทีม่ นั มี execution unit กับขอมูลทีผ่ ดิ พลาดไมสามารถทํางาน ได ดังนัน้ ขอมูลทีถ่ กู ตองเทานัน้ จึงจะทํางานตอได สวนสําคัญวิง่ ที่ 1 / nth performance ซึ่ง n เปนจํานวนของ case พื้นฐาน trade-off ในเครือ่ ง SIMD เปนความสามารถของ processor เทียบกับจํานวนของ processor เครือ่ งทีอ่ อกมาเนนหนักระดับของ parallelism ทีใ่ หญ เหนือประสิทธิภาพเฉพาะตัวของ processor สําหรับตัวอยางให 65536 single bit-wide processor ขณะที่ Illiac IV มี 64 bit processor หลังจากทีเ่ ริม่ นํากลับมาใชใหมในป 1980 ในชวงแรกโดย เครือ่ ง Thinking แลวก็ Mar Par รูปแบบ SIMD มีการวางเหมือนกับการวางสถาปตยกรรม multiprocessor สําหรับเหตุผล 2 ขอ ขอแรก มันไมยืดหยุนมาก จํานวนความสําคัญของปญหาไมสามารถใชตาม แบบของเครือ่ งได และ สถาปตยกรรมไมไดมกี ารลดขนาดลงในแบบการแขงขัน นั้น เปนเครือ่ ง SIMD ขนาดเล็ก ซึ่งมีราคา และ ประสิทธิภาพไมดี เมือ่ เทียบสิง่ นัน้ ของทาง เลือก ขอสอง SIMD ไมสามารถใชประโยชนของประสิทธิภาพทีม่ อี ยูม ากมาย และ คาประโยชนของ technology microprocessor แทนทีข่ อง leveraging ทีเ่ ปน technology ขั้นตํา่ ผูอ อกแบบเครือ่ ง SIMD อาจจะสราง custom processor สําหรับเครือ่ งของพวกเขา แมวาคอมพิวเตอร SIMD จะแยกจากรูปแบบเหมือนกับทางเลือกทัว่ ไป รูปแบบของสถาปตยกรรมนีจ้ ะถูกออกแบบออกมาอยางตอเนือ่ ง ผลประโยชนพเิ ศษมาก มายเปนขอมูล parallel และ การรองขอขอบเขตของการ set function unit ผูอ อกแบบ สามารถสรางใน support สําหรับสวนกลางของระบบปฏิบตั กิ าร

องคกรใหเรียกวา array processor และใชสาหรั ํ บงาน image และ signal processor

การทดลองอื่นเริ่มแรก มันเปนการยากทีจ่ ะแบง multiprocessor ตัวแรก ความประหลาดใจเมื่อ คอมพิวเตอรตวั แรก จากบริษทั Eckert-Mauchly สําหรับตัวอยาง มีรปู แบบจําลองที่ สามารถจะแกไขใหงายขึ้น Holland [1969] ไดเก็บขอพิสจู นของ multiprocessor เอกสารทีส่ าคั ํ ญของ multiprocessor 2 ชิน้ อยูใ นป 1970 ทีม่ หาวิทยาลัย Carnegic Mellon เอกสารสิง่ แรกเปนของ C.mmp [Wulf and harbison 1978] ซึง้ เปน สวนประกอบ 16 PDP-11s ติดตอโดย crossbar switch ไปยัง 16 memory unit ซึง่ เปน multiprocessor ตัวแรก ซึง่ ประกอบดวย processor มากกวา 2 ตัว และมีรปู แบบ โปรแกรมในการแบงหนวยความจํา จุดสําคัญที่จะมองหาใน C.mmp บน software โดย เฉพาะในพื้นที่ os เครือ่ งลาสุด Cm[swan et al 1977] คือ cluster base multiprocessor กับ การกระจายหนวยความจํา และ nonuniform เวลาเขาสูขอมูลการขาดไปของ cache และ การเขาสูขอมูลที่อยูหางไกลทําใหขอ มูลทีย่ า ยไปฉุกเฉิน เครือ่ งนี้ และ จํานวนการ ทดลองของ application ถูกกลาววาเปนลักษณะทีด่ โี ดย Gehringer , Siewiorek และ serall [1987] แนวคิดมากมายในเครือ่ งเหลานีถ้ กู นํากลับมาใชในป 1980 เมือ่ microprocessor ทําการสราง multiprocessor ถูกมาก

ขอโตแยงทีด่ ที ส่ี ดุ ใน parallel processing ในบทเรียนนี้จะใหเหตุผลที่ดีสาหรั ํ บการละทิง้ รูปแบบของการคํานวณ ในปจจุบนั และ Amdahl [1967] ไดใหเหตุผลในการสนับสนุนของความตอเนือ่ งบน สถาปตยกรรม IBM 370 เหตุผลสําหรับประโยชนของการทํา parallel สามารถทําใหเดิน ไปยังศตวรรษที่ 19 ความไดผลของ multiprocessor สําหรับการลดขนาดภายในเฉพาะ ตัวโปรแกรมทีส่ าคั ํ ญ ยังคงเปนสิง่ ทีย่ งั ตองสํารวจอยู

สราง parallel processor ที่มีประสิทธิภาพสูงไดอยางไร

หนึ่งในขอโตเถียงทีย่ าวนานทีส่ ดุ ใน parallel processing วาทําอยางไรจึง จะสราง multiprocessor ทีเ่ ร็วทีส่ ดุ โดยใช processor ตัวเล็กๆ มากมาย หรือ จํานวน processor ทีเ่ ร็วทีส่ ดุ ในจํานวนนอยทีส่ ดุ รูป 8.46 แสดงใหเห็นถึง statement ของโรงงาน ในป 1990 จํานวนของ processor เทียบกับประสิทธิภาพเฉพาะตั;ของ processor รูป 8.46 จะนําเราไปยัง E1 Dorado-multiprocessor ประสิทธิภาพสูง ใน 2-3 ปทผ่ี า นมา ขอโตแยงเหลานีก้ ล็ ดลง เครือ่ ง microprocessor พืน้ ฐาน เปน พื้นฐาน สําหรับเครือ่ งทีม่ ปี ระสิทธิภาพสูง บางทีการเปลีย่ นแปลงครัง้ ใหญทส่ี ดุ เปนการดูวา เครือ่ งทีส่ รางจาก microprocessor 100 processor หรือบางทีอาจจะเปน 2-3 พัน processor แตไมถงึ 10000 ซึง่ เปนสิง่ คาดเดาไวเริม่ แรก ใน 5 ปทผ่ี า นมา ทางออกไดปรากฏออกมาเหมือนกับคําแนะนํามากมาย มันไมเพียงพอตอจํานวนของ microprocessor ทีม่ ปี ระสิทธิภาพสูง มันเปนคําตอบทีไ่ ด ในความสามารถไปยังโปรแกรม เครือ่ ง parallel อยางไรก็ดปี ระสิทธิภาพเครือ่ ง และ ความกาวหนาในสถาปตยกรรม parallel ก็ยงั ดําเนินตอไป

ผลประโยชน และการพัฒนาที่มากขึ้น ขอยกเวนของ parallel vector machines computer MIMD อืน่ ๆ ทัง้ หมดที่ มีการสรางจาก off-the-shelf microprocessor ใช บัส และ logically หนวยความจําสวน กลาง หรือ network การติดตอซึง่ กัน และ กัน และ การกระจายหนวยความจํา จํานวน ของเครือ่ งทอลองทีส่ รางในป 1980 อนาคตที่จะแกไข และ สงเสริมรูปแบบพืน้ ฐานมีอยู มากมายใน multiprocessor ทุกวันนี้

การพัฒนาของเครื่อง bus-bases Coherent ถึงแมวา mainfram เครือ่ งทีใ่ หญมากจะสรางดวย multiple processor ใน ป 1970 multiprocessor ไมไดเปนความสําเร็จขัน้ สูงจนกระทัง่ ในป 1980 Bell [1985] แนะนําวิธีที่จะใช microprocessor ขนาดเล็ก ซึง่ อนุญาตใหหนวยความจํา บัส ผานไปยัง interconnection network hardware สิ่งนัน้ เปนระบบปฏิบตั กิ ารซึง่ ดูแลการทํางานของ multiprocessor ไมใหตอ งรอนาน นัน้ เปนสิง่ ประดิษฐของระบบปฏิบตั กิ ารใหม ในหนา

นี้ Bell กําหนด terms multipleprocessor และ multicomputer และ set stage สําหรับ 2 ความแตกตางทีใ่ กลเขามาถึงในการสรางเครือ่ งขนาดใหญ เริม่ แรก bus-base multiprocessor กับ snooping cache เปน Synapse N+1 วางรูปรางโดย Frank [1984] Goodman [1983] เขียนในหนาแรกของการพูดถึงรูปราง snooping cache ในทายป 1980 มีคาแนะนํ ํ าสถาปตยกรรม bus-based snooping-cache ในการคาขายมากมาย การเพิม่ silicon Graphics 4 D/240 [ Basktt et al 1988 ] the Encore Multimax [Wison 1987] and sequent symmetry [ Lovett and thakkar 1988 ]กลางป 1980 ไดมีการดูการพัฒนาของ alternative coherence protocol และ Archibald และ Baer [1986] เตรียมการสํารวจทีด่ ี และวิเคราะห็ อยางไรก็ดเี ปนสิง่ ทีเ่ กีย่ วของไปยัง original paper

การดูเครื่องที่มีขนาดใหญ ในความพยายามที่จะสราง multiprocessor ขนาดใหญ 2 คําสัง่ ทีแ่ ตกตาง ที่ใชตรวจขอความที่ผาน multicomputer และ scalable share-memory multiprocessor ถึง แมัวาจะมีความพยายามที่จะสราง mesh และ hypercube-connected multiprocessor หนึง่ ของเครือ่ งรุน แรกทีป่ ระสบความสําเร็จการนําชิน้ สวนทัง้ หมดมารวมกัน เปน Cosmic Cube สรางที่ Caltech [Seitz 1985] มันเปนความรูเ บือ้ งตนทีส่ าคั ํ ญใน routing และ interconnect technology และเนือ้ หาสรุปคาของ interconnect ซึง่ ชวยทําให multicomputer สามารถอยูต อ ไปได Intel ipsc 860 a hypercube-conect collection ของ i860s เปนพื้นฐานของแนวคิดนี้ เครือ่ งทีอ่ อกมาสวนใหญจะเหมือนกับ Intel paragan คือ ใช network กับ lower dimensionality และ higher individual link the paragon ยังคงใช เวลาในการแยก i860 ทีเ่ หมือนกับ communication controller ในแตละ node เครือ่ ง Thinking CM-5 ใชของ off-the-shelf microprocessor มันเตรียมระดับของผูใ ชใหเขาสู ชองทางการติดตอ ในป 1995 เครือ่ งทัง้ 2 นี้ ไดเปนตัวอยางของ multicomputer ที่สงผาน ขอความได ความพยายามเริม่ แรกในการสราง Scalable shared-memory multiprocessor ประกอบดวย IBM RP 3 [P fister et al 1985 ] the NYU ultracomputer [Schwartz 1980 : elder st al 1985 ] ผลงานของมหาวิทยาลัย Illinois Cedar [ Gajksi et al

1983 ] และ BBN Butterfly และ Monarch [ BBn Laborataies 1986; Rattberg et al 1990] เครื่องเหลานัน้ เตรียมการเปลีย่ นแปลงไวบน nonuniform distributed memory model แต ไมชว ยทํางานใน cache coherence สถานทีซ่ ง่ึ เนือ้ หาประกอบจากโปรแกรม ผลงาน RP 3 และ Ultracomputer ทัง้ คูถ กู ตรวจสอบแนวคิดใหมใน synchronization ใน 4 เครือ่ งทัง้ หมด interconnect network จนเปนคาทีม่ ากกวา processing node ตัดปญหาสําหรับ version เล็กๆของเครือ่ ง Cray T3D สรางจากแนวคิดนี้ โดยใช noncoherent shared address space และสรางความกาวหนาใน technology ในการติดตอกัน และ กัน ซึ่ง พัฒนาในขอบเขตของ multiprocessor การแผรปู แบบการแบงหนวยความจํา กับ scalable cache cocherence จะทําโดยการรวมจํานวนตัวเลขของแนวคิด คําสั่งพื้นฐาน สําหรับ cache coherence เปนทีร่ จู กั กันดีกอ น snooping cache ในความเปนจริง cachecoherence protocol ตัวแรก ใชคาสั ํ ง่ ทีอ่ อกแบบโดย Targ [1976] และ implementation ของ cache conerence ( ตอนนีจ้ ะเรียก distributed shared memory วา DSM ) เปนการบรรยายลักษณะแรกโดย Agarwal et al 1988 และเหมือนกับพื้นฐาน สําหรับ Stanford DASH multiprocessor et al [1990,1992] the kendall Square Reseach Ksr-1 [Burkhardt et al 1992] เปนการติดตอ implementation แรก ของ scalable coherent shared memory มันแผไปยังพื้นฐาน DSM ทีใ่ กลเขามาไปยัง implement a concept ทีเ่ รียกวา COMA ( cache only memory achitecture) ซึง่ ทําใหหนวยความ จําหลักของ cache เหมือนกับลักษณะในตัวอยาง 8.13 The convex exemplar implement scalable coherent shared memory ใชสถาปตยกรรม 2 ระดับ ที่ระดับตําที ่ ส่ ดุ 8 บิต processor ทีส่ รางโดยใช crossbar เปนวงแหวนไป 32 รอบ รวมทัง้ หมดจะได 256 processor

Reference 1. Adve, S>V. and M.D. Hill[1990], “Weak ordering—A new definition,” Pro. 17th Int’I Symposium on computer Architecture (June), Seattle, 2 – 14. 2. Agarwal, A., J. L. Hennessy, R. Simoni, and M.A. Horowitz [1998]. “An evaluation of directory schemes for cache coherence,” proc. 15th Int’l Symposium on Computer Architecture (June), 280 – 289. 3. Almasi, G.S. and A. Gottlieb [1998]. Benjamin/Cummings, Redwood City, Calif.

HighlyParallel Computing,

4. Amdahl,, G. M. [1967]. “Validity of the single processor approach to achieving large scale computing capabilities,” pro. AFIPS Spring Jooing Computer Conf. 30, Atlantic City, N. J. (April), 483 – 485 5. Archibald, J. and J. – L. Baer [1986]. : Cache coherence protocols: Evaluation using a multiprocessor simulation model,” ACM Trans.on Computer Systems 4:4 (November), 273 – 298. 6. Baskett, F., T. Jermoluk, and D. Solomon [1998], :The 4D-MP graphics superworkstation: Computing + graphics = 40 MIPS + 40 MFLOPS and 10,000 lighted polygons per second,” Proc. Compcon Spring, San Francisco, 468 – 471 7. BBN Laboratories [1986]. “Butterfly parallel processor overview,” Tech. Rep. 6148, BBN Laboratories, Cambridge, Mass. 8. Bell, C. G. [1985]. “Multis: A new class of multiprocessor computers,” Science 228 (April 26), 462 – 467. 9. Bell, C. G. [1989]. “The future of high performance computers in science and engineering,” Comm. Acm 32:9 (September), 1091 – 1101.

10. Bouknight, W. J. S. A. Deneberg, D. E. McIntyre, J. M. Randall, A. H. Sameh, and D. L. Sotnick [1972]. “The Illiac IV system,” Proc. IEEE 60:4, 369 – 379. Also aooears ub D. P. Siewiorek, C. G. Bell, and A. Newell, Computer Structures: Principles and Examples, MrGrawhill, New York (1982), 306 –316. 11. Burkhardt, H. III, S. Frank, B. Knobe, and J. Rothnie [1992]. “Overview of the KSRO computer system,” Tech. Rep. KSR-TR-9202001, Kendall Square Research, Boston(February). 12. Censier, L. And P. Feautrier [1978]. “A new solution to coherence problems, in multicache systems,” IEEE Trans. On Computers C-27:12 (December), 1112 – 1118. 13. Dubois, M., C. Sheurich, and F. Briggs [1988]. “Synchronization, coherence, and event ordering,” IEEE Computer 9-21 (February). 14. Eggers, S.[1989]. Simulation Analysis of Data sharing in Shared Memory Multiprocessors, Ph. D. Thesis, Univ. of California berkeley. Computer Science Division Tech. Rep. UCB/CSD 89/501 (April). 15. Elder, J., A. Gottlieb, C. K. Kruskal, K. P. McAuliffe, L. Randolph, M. Snir, P. Teller, and J. Wilson[1985]. “Issues related to MIMD shared-memory computers: The NYU Ultracomputer approach,” Proc. 12th Int’l Symposium on computer Architecture (June), Boston, 126 – 135. 16. Flynn, M. J. [1966]. “Very high-speed computing systems,” Proc. IEEE 54:12 (December), 1901 – 1909. 17. Frank, S. J. [1984] “Tightly coupled multiprocessor systems speed memory access time,” Electronics 57:1 (January), 164 – 169.

18. Gajski, D., D. Kuck, D. Lawrie, And A. Sameh [1983]. “CEDAR—A large scale multiprocessor,” Proc. Int’l Conf. on Parallel Processing (August), 524 – 529. 19. Gehringer, E.F., D. P. Siewiorek, and Z. Segall [1987]. Parallel Processing: The Cm* Experience, Digital Press, Bedford, Mass. 20. Gharachorloo, K., D. Lenoski, J. Laudon, P. Gibbons, A. Gupta, And J. L. Hennessy [1990]. “Memory consistency and event ordering in scalable sharedmemory multiprocessors, “ Proc. 17th Int’l Symposium on Computer Architecture (June), Seattle, 15 –26. 21. Goodman, J. R. [1983]. “Using cache memory to reduce processor memory traffic,” Proc. 10th int’l Symposium on computer Architecture (June). Stockholm, Sweden, 124 – 131. 22. Hellis, W. D. [1985]. The Connection Machine, MIT Press, Cambridge, Mass. 23. Hockey, R. W. and C. R. Jesshope [1988]. Parallel Compters-2, Architectures, Programming and algorithms, Adam Hilger Ltd., Bristol, England. 24. Holland, J. H. [1959]. “A universal computer capable of executing an arbitrary number of subprograms simultaneously,” Proc. East Joint computer Conf. 16, 108 – 113. 25. Hord, R. M. [1982]. The Illiac-IV, The First Supercomputer, Computer Science Press, Rockville, Md. 26. Hwang, K. [1993]. Advanced Computer Architecture and Parallel Programming, McGraw-Hill, New York. 27. Johny L Henessy & David A Patterson [1996]. “Computer Architecture A Quantitative Approach,” Morgan Kaufmann publishers, Inc., San Francisco, California, 635 – 752.

28. Lamport, L. [1979]. “How to make a multiprocessor computer that correctly executes multiprocessor programs,” IEEE Trans. On Computer C-28:9 (September), 241 – 248. 29. Lensoki, D., J. Laudon, K. Gharachorloo. A. Gupta, and J. L. Hennessy [1990]. “The Stanford DASH multoprocessor,” Peoc. 17th Int’l Symposium on Computer Architecture (June), Seattle, 148 – 159. 30. Lovett, T. and S. Thakkar [1988]. “The Symmetry multiprocessor system,” Proc. 1988 Int’l Conf. of Parallel Processing, University Park, Penn., 303 – 310. 31. Mellor-Crummey, J. M. and M. L. Scott [1991]. “Algorithms for scalable synchronization on shared-memory multiprocessors,” ACM Trans. On Computer Systems 9:1 (February), 21 – 65. 32. Menabrea, L. F. [1842]. “Sketch of the analytical engine invented by Chales Baddage,” Bibiotheque Universelle de Geneve (October). 33. Mitchell, D. [1989]. “The Transputer: The time is now,” Computer Design (RISC supplement), 40 – 41. 34. Miya, E. N. [1985]. “Multiprocessor/distributed processing bibliography,” Computer Architecture News (ACM SIGARCH) 13:1. 27 – 29. 35. Pfister, G. F., W. C. Brantley, D. A. Geroge, S. L. Harvey, W. J. Kleinfekder, K. P. McAuliffe, E. A. Melton, V.a A. Norton, and J. Weiss [1985]. “The IBM research parallel processor prototype (RP3): Introduction and architecture,” Proc. 12th Int’l Symposium on computer Architecture (June), Boston, 764 – 771. 36. Rettberg, R. D., W. R. Crowther, P. P. Carvery, and R. S. Towlinson [1990]. “The Monarch parallel processor hardware design,” IEEE Computer 23:4 (April).

37. Rosenblum, M., S. A. Herrod, E. Witchel, and A. Gutpa [1995]. “Complete computer simulation: The SimOS approach,” to appear in IEEE Parallel and Distributed Technology 3:4 (fall). 38. Schwartz, J. T. [1980]. “Ultracomputers,” Acm Trans. On Programming Languages and Systems 4:2, 484 – 521. 39. Seitz, C. [1985]. “The Cosmic Cube,” Comm. Acm 28:1 (January), 22 – 31. 40. SlotNIck, D. L., W. C. Borck, and R. C. McReynolds [1962]. “The Solomon computer,” Proc. Fall joint computer Conf, (December), Philadelphia, 97 – 107. 41. Stones, H. [1991]. High performance computers, Addiison-Wesley, New York. 42. Swan, R. J., A. Bechtolsheim, K. W. Lai, and J. K. Ousterhout [1977]. “The implementation of the Cm* multi-microprocessor,” Proc. AFIPS National Computing Conf., 645 – 654. 43. Swan, R. J., S. H. Fuller, and D. P. Siewiorek [1977]. “Cm*--A modular, multomicroprocessor,” Proc. AFIPS National Computer Conf. 46.637 – 644. 44. Tang, C. K. [1976]. “Cache design in the tightly coupled multiprocessor system,” Proc. AFIPS National Computer Conf., New York (June), 749 – 753. 45. Unger, S. H. [1958]. “A computer oriented towards spatial problems,” Proc. Institute of Radio Engineers 46:10 (October), 1744 – 1750. 46. Wilson, A. W., Jr. [1987]. “Hierarchical cache/bus architecture for sharedmemory multiprocessors,” Proc. 14th Int’l Symposium on Computer Architecture (June), Pittsburgh, 244 – 252. 47. Wood, D. A. and M. D. Hill [1995]. “Cost-effective parallel computing,” IEEE Computer 28:2 (February).

48. Wulf, W. and C. G. Bell [1972]. “C.mmp—A multi-mini-processor,” Proc. AFIPS Fall Joint Computing Conf. 41, part 2, 765 – 777. 49. Wulf, W. and S. P. Harbison [1978]. “Reflections in a pool of processors—An experience report on C.mmp/Hydra,” Pro. AFIPS 1978 national Computing conf. 48 (June), Anaheim, Calif., 939 – 951.

Related Documents