อ่าน 3 นาที
สถาปัตยกรรมโปรเซสเซอร์ที่เน้นความหน่วงแฝง
สถาปัตยกรรมโปรเซสเซอร์ที่เน้นความหน่วงแฝง คือ สถาปัตยกรรมไมโคร ของ ไมโครโปรเซสเซอร์ ที่ออกแบบมาเพื่อรองรับ เธรด การประมวลผลแบบอนุกรม ด้วยความหน่วงแฝงต่ำ ซึ่งเป็นลักษณะทั่วไปของ...
สถาปัตยกรรมโปรเซสเซอร์ที่เน้นความหน่วงแฝง
สถาปัตยกรรมโปรเซสเซอร์ที่เน้นความหน่วงแฝงคือสถาปัตยกรรมไมโครของไมโครโปรเซสเซอร์ที่ออกแบบมาเพื่อรองรับเธรด การประมวลผลแบบอนุกรม ด้วยความหน่วงแฝงต่ำ ซึ่งเป็นลักษณะทั่วไปของหน่วยประมวลผลกลาง (CPU) ส่วนใหญ่ที่ได้รับการพัฒนามาตั้งแต่ทศวรรษ 1970 สถาปัตยกรรมเหล่านี้โดยทั่วไปมีเป้าหมายที่จะดำเนินการคำสั่งให้ได้มากที่สุดเท่าที่จะเป็นไปได้สำหรับเธรดแบบอนุกรมเดียว ภายในกรอบเวลาที่กำหนด อย่างไรก็ตาม เวลาในการดำเนินการคำสั่งเดียวให้เสร็จสมบูรณ์ตั้งแต่ขั้นตอนการดึงข้อมูลจนถึงการสิ้นสุดอาจแตกต่างกันไปตั้งแต่ไม่กี่รอบไปจนถึงหลายร้อยรอบในบางกรณี[ 1 ]สถาปัตยกรรมโปรเซสเซอร์ที่เน้นความหน่วงแฝงนั้นตรงกันข้ามกับโปรเซสเซอร์ที่เน้นปริมาณงาน ซึ่งให้ความสำคัญกับปริมาณงาน โดยรวม ของระบบมากกว่าความหน่วงแฝงใน การให้บริการ สำหรับเธรดแต่ละเธรดที่ทำงานอยู่[ 2 ] [ 3 ]
อนุกรมวิธานของฟลินน์
โดยทั่วไป สถาปัตยกรรมโปรเซสเซอร์ที่เน้นความหน่วงจะดำเนินการงานเดียวที่ทำงานกับสตรีมข้อมูลเดียว ดังนั้นจึงจัดเป็นSISDตามการจำแนกประเภทของ Flynnสถาปัตยกรรมโปรเซสเซอร์ที่เน้นความหน่วงอาจรวมถึง ส่วนขยายชุดคำสั่ง SIMDเช่น Intel MMXและSSEแม้ว่าส่วนขยายเหล่านี้จะทำงานกับชุดข้อมูลขนาดใหญ่ แต่เป้าหมายหลักคือการลดความหน่วงโดยรวม[ 2 ]
เทคนิคการนำไปใช้
มีเทคนิคทางสถาปัตยกรรมมากมายที่ใช้เพื่อลดความหน่วงโดยรวมสำหรับงานประมวลผลเดียว โดยทั่วไปแล้ว เทคนิคเหล่านี้เกี่ยวข้องกับการเพิ่มฮาร์ดแวร์เพิ่มเติมในไปป์ไลน์เพื่อให้บริการคำสั่งทันทีที่ดึงมาจากหน่วยความจำหรือแคชคำสั่งลักษณะเด่นของสถาปัตยกรรมเหล่านี้คือ พื้นที่ส่วนใหญ่ของชิปถูกใช้ไปกับส่วนอื่นๆ นอกเหนือจากหน่วยประมวลผลเอง ทั้งนี้เนื่องจากมีจุดประสงค์เพื่อลดเวลาที่จำเป็นในการทำงาน "ทั่วไป" ในสภาพแวดล้อมการประมวลผล งานประมวลผลทั่วไปคือชุดคำสั่งแบบอนุกรม ซึ่งมีความสัมพันธ์สูงกับผลลัพธ์ที่ได้จากคำสั่งก่อนหน้าของงานเดียวกัน ดังนั้นจึงสมเหตุสมผลที่ไมโครโปรเซสเซอร์จะใช้เวลาไปกับงานอื่นๆ อีกมากมายนอกเหนือจากการคำนวณที่จำเป็นสำหรับคำสั่งแต่ละคำสั่ง หากปัญหาที่พบระหว่างการคำนวณไม่ได้รับการแก้ไขอย่างรวดเร็ว ความหน่วงสำหรับเธรดก็จะเพิ่มขึ้น เนื่องจากปัญหาเหล่านี้จะทำให้การทำงานของคำสั่งถัดไปหยุดชะงัก และขึ้นอยู่กับการใช้งานไปป์ไลน์ อาจทำให้ความคืบหน้าหยุดชะงักโดยสิ้นเชิงจนกว่าจะแก้ไขปัญหาความสัมพันธ์ได้ หรืออาจนำไปสู่ปัญหามากมายในคำสั่งถัดไป ยิ่งทำให้เวลาในการดำเนินการของเธรดแย่ลงไปอีก[ 4 ] [ 5 ]
ขอบเขตการออกแบบของเทคนิคสถาปัตยกรรมระดับไมโครนั้นกว้างมาก ด้านล่างนี้คือเทคนิคที่ใช้กันทั่วไปบางส่วนเพื่อลดความหน่วงโดยรวมของเธรด
สถาปัตยกรรมชุดคำสั่ง (ISA)
สถาปัตยกรรมส่วนใหญ่ในปัจจุบันใช้คำสั่งที่สั้นและเรียบง่ายกว่า เช่นสถาปัตยกรรมโหลด/จัดเก็บซึ่งช่วยในการปรับปรุงไปป์ไลน์คำสั่งให้ทำงานได้เร็วขึ้น โดยปกติคำสั่งจะมีขนาดเท่ากันทั้งหมด ซึ่งช่วยในการปรับปรุงตรรกะการดึงคำสั่งด้วย สถาปัตยกรรม ISA ดังกล่าวเรียกว่าสถาปัตยกรรมRISC [ 6 ]
การประมวลผลคำสั่งแบบไปป์ไลน์
การประมวลผลแบบไปป์ไลน์จะซ้อนทับการทำงานของคำสั่งหลายคำสั่งจากเธรดการทำงานเดียวกัน เพื่อเพิ่มความถี่ของสัญญาณนาฬิกาหรือเพิ่มจำนวนคำสั่งที่เสร็จสมบูรณ์ต่อหน่วยเวลา ซึ่งจะช่วยลดเวลาการทำงานโดยรวมของเธรด แทนที่จะรอให้คำสั่งเดียวเสร็จสิ้นขั้นตอนการทำงานทั้งหมด คำสั่งหลายคำสั่งจะถูกประมวลผลพร้อมกันในขั้นตอนต่างๆ ภายในไปป์ไลน์[ a ]
การเปลี่ยนชื่อทะเบียน
เทคนิคนี้ใช้เพื่อเพิ่มขนาดไฟล์รีจิสเตอร์โดยรวมให้มากกว่าที่ระบุไว้ใน ISA สำหรับโปรแกรมเมอร์ และเพื่อกำจัดความสัมพันธ์ที่ไม่ถูกต้อง สมมติว่าเรามีคำสั่งสองคำสั่งที่ต่อเนื่องกันซึ่งอ้างอิงถึงรีจิสเตอร์เดียวกัน คำสั่งแรกอ่านรีจิสเตอร์ในขณะที่คำสั่งที่สองเขียนลงไป เพื่อรักษาความถูกต้องของโปรแกรม จำเป็นอย่างยิ่งที่จะต้องแน่ใจว่าคำสั่งที่สองจะไม่เขียนลงในรีจิสเตอร์ก่อนที่คำสั่งแรกจะสามารถอ่านค่าเดิมได้ นี่เป็นตัวอย่างของ ความสัมพันธ์แบบ Write-After-Read (WAR)เพื่อกำจัดความสัมพันธ์นี้ ไปป์ไลน์จะ 'เปลี่ยนชื่อ' คำสั่งภายในโดยการกำหนดให้กับรีจิสเตอร์ภายใน ดังนั้นคำสั่งจึงสามารถทำงานได้ และผลลัพธ์ที่ได้จะพร้อมใช้งานสำหรับคำสั่งถัดไปทั้งหมดทันที แม้ว่ารีจิสเตอร์ปลายทางที่โปรแกรมตั้งใจไว้จะถูกเขียนลงไปในภายหลังก็ตาม ในทำนองเดียวกัน หากคำสั่งทั้งสองหมายถึงการเขียนลงในรีจิสเตอร์เดียวกันแบบWrite-After-Write (WAW)ไปป์ไลน์จะเปลี่ยนชื่อและตรวจสอบให้แน่ใจว่าผลลัพธ์พร้อมใช้งานสำหรับคำสั่งในอนาคตโดยไม่จำเป็นต้องเรียงลำดับการทำงาน[ b ]
การจัดระเบียบความทรงจำ
หน่วยความจำหลายระดับ ซึ่งรวมถึงแคชหน่วยความจำหลักและหน่วยเก็บข้อมูลแบบไม่ลบเลือนเช่น ฮาร์ดดิสก์ (ซึ่งเป็นที่เก็บคำสั่งโปรแกรมและข้อมูล) ได้รับการออกแบบมาเพื่อใช้ประโยชน์จากความใกล้เคียงเชิงพื้นที่และความใกล้เคียงเชิงเวลาเพื่อลดเวลาการเข้าถึงหน่วยความจำ โดยรวม ยิ่ง โปรเซสเซอร์ใช้เวลาน้อยลงในการรอข้อมูลจากหน่วยความจำ จำนวนคำสั่งที่ใช้ทรัพยากรไปป์ไลน์ในขณะที่ไม่ได้ทำงานก็จะยิ่งน้อยลง ไปป์ไลน์คำสั่งจะหยุดชะงักโดยสมบูรณ์หากบัฟเฟอร์ภายในทั้งหมด (เช่นสถานีสำรอง ) เต็มความจุ ดังนั้น หากคำสั่งใช้รอบการทำงานที่ไม่ได้ใช้งานน้อยลงในขณะที่อยู่ในไปป์ไลน์ ก็จะมีโอกาสมากขึ้นในการใช้ประโยชน์จากความขนานระดับคำสั่ง (ILP) เนื่องจากตรรกะการดึงข้อมูลสามารถดึงคำสั่งจากแคช/หน่วยความจำได้มากขึ้นต่อหน่วยเวลา[ c ]
การดำเนินการเชิงเก็งกำไร
สาเหตุสำคัญประการหนึ่งที่ทำให้ไปป์ไลน์หยุดชะงักคือการพึ่งพาการไหลของควบคุม กล่าวคือ เมื่อผลลัพธ์ของคำสั่งกระโดดไม่เป็นที่ทราบล่วงหน้า (ซึ่งมักจะเป็นเช่นนั้น) สถาปัตยกรรมจำนวนมากในปัจจุบันใช้ ส่วนประกอบ ทำนายการกระโดดเพื่อเดาผลลัพธ์ของการกระโดด การทำงานจะดำเนินต่อไปตามเส้นทางที่คาดการณ์ไว้สำหรับโปรแกรม แต่คำสั่งจะถูกติดแท็กเป็นคำสั่งคาดเดา หากการเดาถูกต้อง คำสั่งเหล่านั้นจะได้รับอนุญาตให้ทำงานจนเสร็จสมบูรณ์และอัปเดตผลลัพธ์กลับไปยังไฟล์รีจิสเตอร์/หน่วยความจำ หากการเดาไม่ถูกต้อง คำสั่งคาดเดาทั้งหมดจะถูกล้างออกจากไปป์ไลน์ และการทำงานจะเริ่มต้นใหม่ตามเส้นทางที่ถูกต้องสำหรับโปรแกรม การรักษาความแม่นยำในการทำนายที่สูงทำให้ไปป์ไลน์สามารถเพิ่มปริมาณงานสำหรับเธรดที่กำลังทำงานอยู่ได้อย่างมาก[ d ]
การดำเนินการที่ไม่เป็นไปตามลำดับ
คำสั่งทั้งหมดในเธรดไม่ได้ใช้เวลาในการประมวลผลเท่ากันเสมอไป ไปป์ไลน์แบบซูเปอร์สเกลาร์มักจะมีเส้นทางที่เป็นไปได้หลายเส้นทางสำหรับคำสั่งต่างๆ ขึ้นอยู่กับสถานะปัจจุบันและประเภทของคำสั่งนั้นๆ ดังนั้น เพื่อเพิ่มจำนวนคำสั่งต่อรอบ (IPC) ไปป์ไลน์จึงอนุญาตให้ดำเนินการคำสั่งแบบไม่เรียงลำดับ เพื่อไม่ให้คำสั่งที่อยู่ถัดไปในโปรแกรมหยุดชะงักเนื่องจากคำสั่งที่ใช้เวลานานกว่าในการดำเนินการให้เสร็จสิ้น คำสั่งทั้งหมดจะถูกลงทะเบียนในบัฟเฟอร์จัดลำดับใหม่เมื่อถูกดึงโดยไปป์ไลน์ และอนุญาตให้ดำเนินการเสร็จสิ้น (เช่น เขียนผลลัพธ์กลับ) ตามลำดับของโปรแกรมดั้งเดิม เพื่อรักษาความถูกต้อง[ e ]
การประมวลผลแบบซูเปอร์สเกลาร์
ไปป์ไลน์คำสั่งแบบซูเปอร์สเกลาร์จะดึงคำสั่งหลายคำสั่งเข้ามาในแต่ละรอบสัญญาณนาฬิกา ซึ่งแตกต่างจากไปป์ไลน์แบบสเกลาร์ทั่วไป สิ่งนี้จะเพิ่มระดับความขนานของคำสั่งได้มากเท่ากับจำนวนคำสั่งที่ดึงมาในแต่ละรอบ ยกเว้นในกรณีที่ไปป์ไลน์หยุดชะงักเนื่องจากความสัมพันธ์ของข้อมูลหรือการควบคุมการไหล แม้ว่าอัตราการประมวลผลของไปป์ไลน์แบบซูเปอร์สเกลาร์มักจะน้อยกว่าอัตราการดึงคำสั่ง แต่จำนวนคำสั่งโดยรวมที่ประมวลผลต่อหน่วยเวลา (> 1) โดยทั่วไปจะมากกว่าไปป์ไลน์แบบสเกลาร์[ f ]
แตกต่างจากสถาปัตยกรรมโปรเซสเซอร์ที่เน้นปริมาณงาน
ในทางตรงกันข้าม สถาปัตยกรรมโปรเซสเซอร์ที่เน้น ปริมาณงานถูกออกแบบมาเพื่อเพิ่มปริมาณ 'งานที่มีประโยชน์' ให้มากที่สุดในช่วงเวลาที่สำคัญ งานที่มีประโยชน์หมายถึงการคำนวณขนาดใหญ่บนข้อมูลจำนวนมาก โดยจะทำได้โดยการประมวลผลแบบขนานเพื่อให้สามารถคำนวณได้พร้อมกันหลายรายการ การคำนวณอาจเป็นงานเดียวหรือหลายงานจำนวนจำกัด เวลาทั้งหมดที่ใช้ในการดำเนินการ 1 ครั้งจะมากกว่าสถาปัตยกรรมโปรเซสเซอร์ที่เน้นความหน่วงอย่างมาก อย่างไรก็ตาม เวลาทั้งหมดที่ใช้ในการคำนวณชุดใหญ่จะลดลงอย่างมาก ความหน่วงมักจะถูกลดทอนลงเพื่อให้ได้ปริมาณงานต่อรอบที่สูงขึ้น[ 3 ]ด้วยเหตุนี้ โปรเซสเซอร์ที่เน้นความหน่วงอาจคำนวณเสร็จเร็วกว่าโปรเซสเซอร์ที่เน้นปริมาณงานอย่างมาก อย่างไรก็ตาม โปรเซสเซอร์ที่เน้นปริมาณงานอาจดำเนินการคำนวณดังกล่าวไปแล้วหลายร้อยรายการในขณะที่โปรเซสเซอร์ที่เน้นความหน่วงคำนวณเสร็จเพียง 1 ครั้ง[ 2 ]
โปรเซสเซอร์ที่เน้นความหน่วงแฝงจะใช้พื้นที่ชิปจำนวนมากไปกับโครงสร้างควบคุมที่ซับซ้อน เช่น การคาดการณ์สาขาการส่งต่อข้อมูลบัฟเฟอร์เรียงลำดับใหม่ไฟล์รีจิสเตอร์ขนาดใหญ่ และแคชในแต่ละโปรเซสเซอร์ โครงสร้างเหล่านี้ช่วยลดความหน่วงแฝงในการทำงานและเวลาเข้าถึงหน่วยความจำต่อคำสั่ง และทำให้ผลลัพธ์พร้อมใช้งานโดยเร็วที่สุด ในทางกลับกัน สถาปัตยกรรมที่เน้นปริมาณงานมักจะมีโปรเซสเซอร์จำนวนมากที่มีแคชขนาดเล็กกว่ามากและตรรกะควบคุมที่ง่ายกว่า ซึ่งช่วยให้ใช้แบนด์วิดท์ของหน่วยความจำได้อย่างมีประสิทธิภาพและเพิ่มจำนวนหน่วยประมวลผลทั้งหมดบนพื้นที่ชิปเดียวกัน[ 3 ]
GPUเป็นตัวอย่างทั่วไปของสถาปัตยกรรมโปรเซสเซอร์ที่เน้นประสิทธิภาพการประมวลผล
หมายเหตุ
- ^การจัดระเบียบและการออกแบบคอมพิวเตอร์: อินเทอร์เฟซฮาร์ดแวร์/ซอฟต์แวร์บทที่ 4 [ 5 ]
- ^สถาปัตยกรรมคอมพิวเตอร์: แนวทางเชิงปริมาณส่วนที่ 3.1 [ 4 ]
- ^การจัดระเบียบและการออกแบบคอมพิวเตอร์: ส่วนต่อประสานฮาร์ดแวร์/ซอฟต์แวร์บทที่ 5 [ 5 ]
- ^สถาปัตยกรรมคอมพิวเตอร์: แนวทางเชิงปริมาณส่วนที่ 3.3 [ 4 ]
- ^สถาปัตยกรรมคอมพิวเตอร์: แนวทางเชิงปริมาณส่วนที่ 3.4, 3.5 [ 4 ]
- ^สถาปัตยกรรมคอมพิวเตอร์: แนวทางเชิงปริมาณส่วนที่ 3.6-3.8 [ 4 ]
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ สถาปัตยกรรมโปรเซสเซอร์ที่เน้นความหน่วงแฝง
สถาปัตยกรรมโปรเซสเซอร์ที่เน้นความหน่วงแฝง คือ สถาปัตยกรรมไมโคร ของ ไมโครโปรเซสเซอร์ ที่ออกแบบมาเพื่อรองรับ เธรด การประมวลผลแบบอนุกรม ด้วยความหน่วงแฝงต่ำ ซึ่งเป็นลักษณะทั่วไปของ...
อนุกรมวิธานของฟลินน์
โดยทั่วไป สถาปัตยกรรมโปรเซสเซอร์ที่เน้นความหน่วงจะดำเนินการงานเดียวที่ทำงานกับสตรีมข้อมูลเดียว ดังนั้นจึงจัดเป็น SISD ตาม การจำแนกประเภทของ Flynn สถาปัตยกรรมโปรเซสเซอร์ที่เน้นความหน่วงอาจรวมถึง ส่วนขยายชุดคำสั่ง SIMD เช่น Intel MMX และ SSE...
เทคนิคการนำไปใช้
มีเทคนิคทางสถาปัตยกรรมมากมายที่ใช้เพื่อลดความหน่วงโดยรวมสำหรับงานประมวลผลเดียว โดยทั่วไปแล้ว เทคนิคเหล่านี้เกี่ยวข้องกับการเพิ่มฮาร์ดแวร์เพิ่มเติมใน ไปป์ไลน์ เพื่อให้บริการคำสั่งทันทีที่ดึงมาจาก หน่วยความจำ หรือ แคชคำสั่ง ลักษณะเด่นของสถาปัตยกรรมเหล่านี้คือ...
สถาปัตยกรรมชุดคำสั่ง (ISA)
สถาปัตยกรรมส่วนใหญ่ในปัจจุบันใช้คำสั่งที่สั้นและเรียบง่ายกว่า เช่น สถาปัตยกรรมโหลด/จัดเก็บ ซึ่งช่วยในการปรับปรุงไปป์ไลน์คำสั่งให้ทำงานได้เร็วขึ้น โดยปกติคำสั่งจะมีขนาดเท่ากันทั้งหมด ซึ่งช่วยในการปรับปรุงตรรกะการดึงคำสั่งด้วย สถาปัตยกรรม ISA...