หน่วยประมวลผลกลาง

จากวิกิพีเดีย สารานุกรมเสรี
ข้ามไปที่การนำทาง ข้ามไปที่การค้นหา
Intel 80486DX2 CPU เท่าที่เห็นจากข้างต้น
ด้านล่างของIntel 80486DX2แสดงหมุด

หน่วยประมวลผลกลาง ( CPU ) ยังเรียกว่าหน่วยประมวลผลกลาง , ประมวลผลหลักหรือเพียงแค่หน่วยประมวลผลเป็นวงจรอิเล็กทรอนิกส์ที่รันคำแนะนำประกอบไปด้วยโปรแกรมคอมพิวเตอร์ CPU ดำเนินการคำนวณพื้นฐานตรรกะ การควบคุม และอินพุต/เอาต์พุต (I/O) ที่ระบุโดยคำแนะนำในโปรแกรม สิ่งนี้แตกต่างกับส่วนประกอบภายนอก เช่นหน่วยความจำหลักและวงจร I/O [1]และโปรเซสเซอร์พิเศษ เช่นหน่วยประมวลผลกราฟิก (GPU)

รูปแบบการออกแบบและการใช้งาน CPU มีการเปลี่ยนแปลงตลอดเวลา แต่การทำงานพื้นฐานของ CPU ยังคงแทบไม่เปลี่ยนแปลง ส่วนประกอบหลักของซีพียูรวมถึงหน่วยเลขคณิตตรรกะ (ALU) ที่ดำเนินการทางคณิตศาสตร์และการดำเนินงานตรรกะ , ลงทะเบียนประมวลผลที่อุปทานถูกดำเนินการไป ALU และเก็บผลการดำเนินงาน ALU ที่และหน่วยควบคุมที่ orchestrates เรียก (จากหน่วยความจำ) ถอดรหัสและดำเนินการตามคำสั่งโดยสั่งการประสานงานของ ALU รีจิสเตอร์และส่วนประกอบอื่น ๆ

ซีพียูที่ทันสมัยส่วนใหญ่ใช้กับไมโครโปรเซสเซอร์แบบวงจรรวม (IC) โดยมีซีพียูตั้งแต่หนึ่งตัวขึ้นไปบนชิป IC แบบเมทัลออกไซด์-เซมิคอนดักเตอร์ (MOS) ชิปไมโครโปรเซสเซอร์ที่มีซีพียูหลายตัวเป็นโปรเซสเซอร์แบบมัลติคอร์ ฟิสิคัลซีพียูแต่ละตัว คอร์โปรเซสเซอร์ยังสามารถเป็นแบบมัลติเธรดเพื่อสร้างซีพียูเสมือนหรือโลจิคัลเพิ่มเติม [2]

ไอซีที่มี CPU ยังอาจจะมีหน่วยความจำ , อุปกรณ์ต่อพ่วงอินเตอร์เฟซและส่วนประกอบอื่น ๆ ของคอมพิวเตอร์; อุปกรณ์รวมดังกล่าวเรียกว่าไมโครคอนโทรลเลอร์หรือระบบต่างๆ บนชิป (SoC)

โปรเซสเซอร์อาร์เรย์หรือโปรเซสเซอร์เวคเตอร์มีโปรเซสเซอร์หลายตัวที่ทำงานแบบขนาน โดยไม่มีหน่วยใดถือว่าเป็นศูนย์กลาง ซีพียูเสมือนเป็นนามธรรมของทรัพยากรการคำนวณรวมแบบไดนามิก [3]

ประวัติ

EDVACหนึ่งในคอมพิวเตอร์โปรแกรมที่จัดเก็บไว้เครื่องแรก

คอมพิวเตอร์ยุคแรกๆ เช่นENIACจะต้องเดินสายใหม่ทางกายภาพเพื่อทำงานต่างๆ กัน ซึ่งทำให้เครื่องเหล่านี้ถูกเรียกว่า "คอมพิวเตอร์แบบโปรแกรมตายตัว" [4]คำว่า "หน่วยประมวลผลกลาง" ถูกใช้มาตั้งแต่ต้นปี พ.ศ. 2498 [5] [6]เนื่องจากโดยทั่วไปคำว่า "CPU" ถูกกำหนดให้เป็นอุปกรณ์สำหรับการทำงานของซอฟต์แวร์ (โปรแกรมคอมพิวเตอร์) อุปกรณ์แรกสุดที่ ถูกต้องอาจจะเรียกว่าซีพียูมาพร้อมกับการถือกำเนิดของเครื่องคอมพิวเตอร์ที่จัดเก็บโปรแกรม

ความคิดของคอมพิวเตอร์ที่จัดเก็บโปรแกรมที่ได้รับอยู่แล้วในการออกแบบของเจ Presper Eckertและจอห์นวิลเลียม Mauchly 's ENIACแต่ถูกมองข้ามในขั้นต้นเพื่อที่จะสามารถจะแล้วเสร็จเร็ว[7]เมื่อวันที่ 30 มิถุนายน 1945 ก่อนที่จะถูกสร้างขึ้นมา ENIAC คณิตศาสตร์จอห์น von Neumannกระจายกระดาษสิทธิร่างแรกของรายงาน EDVAC เป็นโครงร่างของคอมพิวเตอร์โปรแกรมที่จัดเก็บไว้ซึ่งจะเสร็จสมบูรณ์ในเดือนสิงหาคม พ.ศ. 2492 [8] EDVACได้รับการออกแบบเพื่อดำเนินการตามคำสั่ง (หรือการดำเนินการ) จำนวนหนึ่งประเภท ที่สำคัญ โปรแกรมที่เขียนขึ้นสำหรับ EDVAC จะต้องเก็บไว้ในหน่วยความจำคอมพิวเตอร์ความเร็วสูงแทนที่จะระบุโดยการเดินสายจริงของคอมพิวเตอร์[9]สิ่งนี้เอาชนะข้อจำกัดที่รุนแรงของ ENIAC ซึ่งต้องใช้เวลาและความพยายามอย่างมากในการกำหนดค่าคอมพิวเตอร์ใหม่เพื่อทำงานใหม่[10]ด้วยการออกแบบของฟอน นอยมันน์ โปรแกรมที่ EDVAC ใช้งานสามารถเปลี่ยนแปลงได้ง่ายๆ โดยการเปลี่ยนเนื้อหาของหน่วยความจำ อย่างไรก็ตาม EDVAC ไม่ใช่คอมพิวเตอร์ที่จัดเก็บโปรแกรมเครื่องแรกแมนเชสเตอร์เด็กเป็นคอมพิวเตอร์ขนาดเล็กทดลองเก็บไว้โปรแกรมวิ่งโปรแกรมแรกในวันที่ 21 มิถุนายน 1948 [11]และแมนเชสเตอร์มาร์ค 1วิ่งโปรแกรมแรกในช่วงคืนวันที่ 16-17 มิถุนายน 1949 [12]

ซีพียูรุ่นแรกๆ ได้รับการออกแบบมาโดยเฉพาะซึ่งใช้เป็นส่วนหนึ่งของคอมพิวเตอร์ที่มีขนาดใหญ่กว่าและบางครั้งก็มีลักษณะเฉพาะ[13]อย่างไรก็ตาม วิธีการออกแบบซีพียูแบบกำหนดเองสำหรับแอพพลิเคชั่นเฉพาะนี้ ได้ให้วิธีการส่วนใหญ่ในการพัฒนาโปรเซสเซอร์อเนกประสงค์ที่ผลิตในปริมาณมาก มาตรฐานนี้เริ่มต้นในยุคของทรานซิสเตอร์ เมนเฟรมและมินิคอมพิวเตอร์แบบแยกส่วนและได้เร่งความเร็วขึ้นอย่างรวดเร็วด้วยความนิยมของวงจรรวม  (IC) IC ที่ได้รับอนุญาตให้ซีพียูที่ซับซ้อนมากขึ้นที่จะได้รับการออกแบบและผลิตเพื่อความคลาดเคลื่อนในการสั่งซื้อของนาโนเมตร [14]ทั้งการย่อขนาดและการทำให้เป็นมาตรฐานของ CPU ได้เพิ่มการมีอยู่ของอุปกรณ์ดิจิทัลในชีวิตสมัยใหม่ ไปไกลกว่าการใช้เครื่องคอมพิวเตอร์โดยเฉพาะอย่างจำกัด ไมโครโปรเซสเซอร์สมัยใหม่ปรากฏในอุปกรณ์อิเล็กทรอนิกส์ตั้งแต่รถยนต์[15]ไปจนถึงโทรศัพท์มือถือ[16]และบางครั้งแม้แต่ในของเล่น[17] [18]

แม้ว่า von Neumann มักจะให้เครดิตกับการออกแบบคอมพิวเตอร์โปรแกรมที่เก็บไว้เนื่องจากการออกแบบ EDVAC ของเขา และการออกแบบกลายเป็นที่รู้จักในชื่อสถาปัตยกรรม von Neumannส่วนคนอื่นๆ ก่อนหน้าเขา เช่นKonrad Zuseได้แนะนำและนำแนวคิดที่คล้ายคลึงกันไปใช้[19]ที่เรียกว่าสถาปัตยกรรมฮาร์วาร์ดของHarvard Mark Iซึ่งสร้างเสร็จก่อน EDVAC [20] [21]ยังใช้การออกแบบโปรแกรมที่เก็บไว้โดยใช้เทปกระดาษเจาะรูแทนที่จะเป็นหน่วยความจำอิเล็กทรอนิกส์[22]ความแตกต่างที่สำคัญระหว่างสถาปัตยกรรมฟอนนอยมันน์และฮาร์วาร์ดคือสถาปัตยกรรมหลังแยกการจัดเก็บและการรักษาคำสั่งและข้อมูลของ CPU ในขณะที่สถาปัตยกรรมเดิมใช้พื้นที่หน่วยความจำเดียวกันสำหรับทั้งคู่[23]ซีพียูที่ทันสมัยส่วนใหญ่เป็นฟอนต์นอยมันน์เป็นหลักในการออกแบบ แต่ซีพียูที่มีสถาปัตยกรรมฮาร์วาร์ดก็มีให้เห็นเช่นกัน โดยเฉพาะอย่างยิ่งในแอพพลิเคชั่นฝังตัว ตัวอย่างเช่นไมโครคอนโทรลเลอร์Atmel AVRเป็นตัวประมวลผลสถาปัตยกรรมของฮาร์วาร์ด[24]

รีเลย์และหลอดสุญญากาศ ( หลอดเทอร์มิโอนิก) มักใช้เป็นส่วนประกอบสวิตชิ่ง[25] [26]คอมพิวเตอร์ที่มีประโยชน์ต้องการอุปกรณ์สวิตชิ่งนับพันหรือหลายหมื่นเครื่อง ความเร็วโดยรวมของระบบขึ้นอยู่กับความเร็วของสวิตช์คอมพิวเตอร์หลอดสุญญากาศเช่น EDVAC มักจะใช้เวลาเฉลี่ยแปดชั่วโมงระหว่างความล้มเหลว ในขณะที่คอมพิวเตอร์ถ่ายทอดเช่นHarvard Mark I (ช้ากว่า แต่เก่ากว่า) ล้มเหลวน้อยมาก[6]ในท้ายที่สุด CPU ที่ใช้หลอดเป็นหลักเนื่องจากข้อได้เปรียบด้านความเร็วที่สำคัญซึ่งโดยทั่วไปมีมากกว่าปัญหาความน่าเชื่อถือ CPU ซิงโครนัสรุ่นแรกๆ เหล่านี้ส่วนใหญ่ทำงานที่อัตราสัญญาณนาฬิกาต่ำเมื่อเทียบกับการออกแบบไมโครอิเล็กทรอนิกส์สมัยใหม่ ความถี่สัญญาณนาฬิกาตั้งแต่ 100 kHzถึง 4 MHz เป็นเรื่องปกติมากในเวลานี้ โดยส่วนใหญ่จำกัดด้วยความเร็วของอุปกรณ์สวิตชิ่งที่สร้างขึ้นด้วย [27]

ซีพียูทรานซิสเตอร์

โปรเซสเซอร์ IBM PowerPC 604e

ความซับซ้อนในการออกแบบของซีพียูเพิ่มขึ้นเมื่อเทคโนโลยีต่างๆ อำนวยความสะดวกในการสร้างอุปกรณ์อิเล็กทรอนิกส์ที่มีขนาดเล็กลงและเชื่อถือได้มากขึ้น การปรับปรุงดังกล่าวครั้งแรกที่มาพร้อมกับการถือกำเนิดของทรานซิสเตอร์ซีพียู transistorized ในช่วงปี 1950 และ 1960 ไม่ได้มีที่จะสร้างขึ้นจากขนาดใหญ่ที่ไม่น่าเชื่อถือและเปราะบางองค์ประกอบสลับเช่นหลอดสูญญากาศและรีเลย์ [28]ด้วยการปรับปรุงนี้ ซีพียูที่ซับซ้อนและเชื่อถือได้มากขึ้นถูกสร้างขึ้นบนแผงวงจรพิมพ์หนึ่งหรือหลายแผ่นที่มีส่วนประกอบแยก (แยก)

ในปีพ.ศ. 2507 IBM ได้เปิดตัวสถาปัตยกรรมคอมพิวเตอร์IBM System/360ซึ่งใช้ในคอมพิวเตอร์หลายเครื่องที่สามารถเรียกใช้โปรแกรมเดียวกันได้โดยมีความเร็วและประสิทธิภาพต่างกัน(29)นี่เป็นเรื่องสำคัญในช่วงเวลาที่คอมพิวเตอร์อิเล็กทรอนิกส์ส่วนใหญ่ไม่สามารถใช้งานร่วมกันได้ แม้กระทั่งคอมพิวเตอร์ที่ผลิตโดยผู้ผลิตรายเดียวกัน เพื่ออำนวยความสะดวกในการปรับปรุงนี้ IBM ใช้แนวคิดของไมโครโปรแกรม (มักเรียกว่า "ไมโครโค้ด") ซึ่งยังคงเห็นการใช้งานอย่างแพร่หลายในซีพียูสมัยใหม่[30]สถาปัตยกรรม System/360 ได้รับความนิยมอย่างมากจนครองตลาดคอมพิวเตอร์เมนเฟรมมานานหลายทศวรรษ และทิ้งมรดกที่ยังคงดำเนินต่อไปโดยคอมพิวเตอร์สมัยใหม่ที่คล้ายคลึงกันเช่น IBM zSeries. [31] [32]ในปี 1965 อุปกรณ์ดิจิตอลคอร์ปอเรชั่น (ธันวาคม) แนะนำเครื่องคอมพิวเตอร์ที่มีอิทธิพลอื่นมุ่งเป้าไปที่ตลาดทางวิทยาศาสตร์และการวิจัยที่PDP-8 [33]

บอร์ด Fujitsu พร้อมโปรเซสเซอร์ SPARC64 VIIIfx

คอมพิวเตอร์ที่ใช้ทรานซิสเตอร์มีข้อดีเหนือกว่ารุ่นก่อนหลายประการ นอกเหนือจากการเพิ่มความน่าเชื่อถือและการใช้พลังงานที่ลดลงแล้ว ทรานซิสเตอร์ยังอนุญาตให้ซีพียูทำงานที่ความเร็วสูงกว่ามาก เนื่องจากเวลาในการเปลี่ยนของทรานซิสเตอร์สั้นเมื่อเทียบกับหลอดหรือรีเลย์[34]ความน่าเชื่อถือที่เพิ่มขึ้นและความเร็วที่เพิ่มขึ้นอย่างมากขององค์ประกอบการสลับ (ซึ่งตอนนี้เกือบจะเป็นทรานซิสเตอร์เท่านั้น); อัตรานาฬิกาของ CPU ในสิบเมกะเฮิรตซ์นั้นหาได้ง่ายในช่วงเวลานี้[35]นอกจากนี้ ในขณะที่ซีพียูแบบแยกและไอซีซีพียูมีการใช้งานหนัก การออกแบบใหม่ที่มีประสิทธิภาพสูง เช่นตัวประมวลผลเวคเตอร์SIMD (Single Instruction Multiple Data) ก็เริ่มปรากฏขึ้น(36)การออกแบบการทดลองในช่วงต้นเหล่านี้ในภายหลังก่อให้เกิดยุคของเฉพาะซูเปอร์คอมพิวเตอร์เช่นผู้ที่ทำโดยเครย์อิงค์และบริษัท ฟูจิตสึ จำกัด (36)

CPU การรวมขนาดเล็ก

CPU, หน่วยความจำหลักและอินเทอร์เฟซบัสภายนอกของ DEC PDP-8 /I ทำจากวงจรรวมขนาดกลาง

ในช่วงเวลานี้ ได้มีการพัฒนาวิธีการผลิตทรานซิสเตอร์ที่เชื่อมต่อถึงกันจำนวนมากในพื้นที่ขนาดกะทัดรัดวงจรรวม (IC) ได้รับอนุญาตเป็นจำนวนมากของทรานซิสเตอร์ที่จะผลิตที่เดียวเซมิคอนดักเตอร์ชั่ตายหรือ "ชิป" ในตอนแรก มีเพียงวงจรดิจิทัลพื้นฐานที่ไม่เฉพาะทาง เช่นประตู NORเท่านั้นที่ถูกย่อให้เป็นไอซี[37]ซีพียูที่ใช้ไอซี "แบบสร้าง" เหล่านี้โดยทั่วไปจะเรียกว่าอุปกรณ์ "การรวมขนาดเล็ก" (SSI) ไอซี SSI เช่นที่ใช้ในApollo Guidance Computerมักจะมีทรานซิสเตอร์อยู่ไม่กี่โหล ในการสร้าง CPU ทั้งหมดจาก SSI ICs ต้องใช้ชิปหลายพันตัว แต่ยังคงใช้พื้นที่และพลังงานน้อยกว่าการออกแบบทรานซิสเตอร์แบบแยกรุ่นก่อนหน้านี้ [38]

System/370ของ IBM ซึ่งเป็นรุ่นต่อจาก System/360 ใช้ SSI IC แทนโมดูลทรานซิสเตอร์แบบแยกเทคโนโลยี Solid Logic [39] [40] PDP-8 /I และ KI10 PDP-10ของ DEC ก็เปลี่ยนจากทรานซิสเตอร์แต่ละตัวที่ใช้โดย PDP-8 และ PDP-10 เป็น SSI ICs [41]และสายPDP-11 ที่ได้รับความนิยมอย่างมากนั้นเดิม สร้างด้วย SSI ICs แต่ในที่สุดก็ถูกนำไปใช้กับส่วนประกอบ LSI เมื่อสิ่งเหล่านี้กลายเป็นจริง

CPU การรวมขนาดใหญ่

Lee Boysel ตีพิมพ์บทความที่ทรงอิทธิพล ซึ่งรวมถึง "แถลงการณ์" ในปี 1967 ซึ่งอธิบายวิธีสร้างคอมพิวเตอร์เมนเฟรมแบบ 32 บิตที่เทียบเท่าจากวงจรการรวมขนาดใหญ่ (LSI) จำนวนที่ค่อนข้างน้อย[42] [43]วิธีเดียวที่จะสร้างชิป LSI ซึ่งเป็นชิปที่มีเป็นร้อยหรือมากกว่าประตูคือการสร้างให้พวกเขาใช้ MOS กระบวนการผลิตเซมิคอนดักเตอร์ (ทั้งตรรกะ PMOS , ตรรกะ NMOSหรือCMOS ตรรกะ ) อย่างไรก็ตาม บางบริษัทยังคงสร้างโปรเซสเซอร์จากชิปไบโพลาร์-ทรานซิสเตอร์-ทรานซิสเตอร์ลอจิก (TTL) เนื่องจากทรานซิสเตอร์สองขั้วทางแยกนั้นเร็วกว่าชิป MOS จนถึงปี 1970 (บางบริษัทเช่นDatapointยังคงสร้างโปรเซสเซอร์จากชิป TTL จนถึงต้นทศวรรษ 1980) [43]ในทศวรรษที่ 1960 MOS ICs นั้นช้ากว่าและในขั้นต้นถือว่ามีประโยชน์เฉพาะในการใช้งานที่ต้องใช้พลังงานต่ำเท่านั้น[44] [45]หลังจากการพัฒนาเทคโนโลยี MOS ประตูซิลิกอนโดยFederico Fagginที่ Fairchild Semiconductor ในปี 2511 MOS ICs ได้แทนที่ TTL สองขั้วเป็นเทคโนโลยีชิปมาตรฐานในช่วงต้นทศวรรษ 1970 [46]

ในขณะที่เทคโนโลยีไมโครอิเล็กทรอนิกส์ก้าวหน้า ทรานซิสเตอร์จำนวนมากขึ้นถูกวางลงบนไอซี ทำให้จำนวนไอซีแต่ละตัวที่จำเป็นสำหรับซีพียูที่สมบูรณ์ลดลง MSI และ LSI ICs เพิ่มจำนวนทรานซิสเตอร์เป็นร้อยแล้วเป็นพัน ภายในปี พ.ศ. 2511 จำนวนไอซีที่จำเป็นในการสร้างซีพียูที่สมบูรณ์ได้ลดลงเหลือ 24 ไอซีจากแปดประเภทที่แตกต่างกัน โดยแต่ละไอซีจะมี MOSFET ประมาณ 1,000 ตัว [47]ตรงกันข้ามอย่างสิ้นเชิงกับ SSI และ MSI รุ่นก่อน การใช้งาน LSI ครั้งแรกของ PDP-11 ประกอบด้วยซีพียูที่ประกอบด้วยวงจรรวม LSI เพียงสี่วงจรเท่านั้น [48]

ไมโครโปรเซสเซอร์

แม่พิมพ์ของไมโครโปรเซสเซอร์Intel 80486DX2 (ขนาดจริง: 12 × 6.75 มม.) ในบรรจุภัณฑ์
Intel Core i5 CPU บนเมนบอร์ดแล็ปท็อปVaio E series (ทางด้านขวา ใต้ฮีทไปป์ )
ด้านในของแล็ปท็อปโดยถอด CPU ออกจากซ็อกเก็ต

ความก้าวหน้าในเทคโนโลยีMOS IC นำไปสู่การประดิษฐ์ไมโครโปรเซสเซอร์ในช่วงต้นทศวรรษ 1970 [49]นับตั้งแต่เปิดตัวไมโครโปรเซสเซอร์ตัวแรกที่มีจำหน่ายในท้องตลาดคือIntel 4004ในปี 1971 และไมโครโปรเซสเซอร์ที่ใช้กันอย่างแพร่หลายเป็นครั้งแรกคือIntel 8080ในปี 1974 ซีพียูประเภทนี้เกือบจะแซงหน้าวิธีการใช้งานหน่วยประมวลผลกลางอื่น ๆ เกือบทั้งหมด ผู้ผลิตเมนเฟรมและมินิคอมพิวเตอร์ในสมัยนั้นเปิดตัวโปรแกรมพัฒนา IC ที่เป็นเอกสิทธิ์เพื่ออัปเกรดสถาปัตยกรรมคอมพิวเตอร์รุ่นเก่าของตนและในที่สุดก็ผลิตชุดคำสั่งไมโครโปรเซสเซอร์ที่เข้ากันได้ซึ่งเข้ากันได้กับฮาร์ดแวร์และซอฟต์แวร์รุ่นเก่า เมื่อรวมกับการถือกำเนิดและความสำเร็จในท้ายที่สุดของคอมพิวเตอร์ส่วนบุคคลที่แพร่หลายคำว่าCPUถูกนำไปใช้กับไมโครโปรเซสเซอร์โดยเฉพาะ[a]เท่านั้น CPU หลายตัว (ที่ระบุถึงแกน ) สามารถรวมกันเป็นชิปประมวลผลตัวเดียวได้[50]

CPU รุ่นก่อนๆ ถูกนำไปใช้เป็นส่วนประกอบแบบแยกส่วนและวงจรรวมขนาดเล็ก(IC) จำนวนมากบนแผงวงจรเดียวหรือมากกว่า[51]ไมโครโปรเซสเซอร์เป็นซีพียูที่ผลิตขึ้นโดยใช้ไอซีจำนวนน้อยมาก มักจะเพียงหนึ่ง[52]ขนาด CPU ที่มีขนาดเล็กโดยรวมเป็นผลมาจากการดำเนินการเกี่ยวกับการเดียวตายหมายถึงการได้เร็วขึ้นสลับเวลาเพราะปัจจัยทางกายภาพชอบลดลงประตูความจุกาฝาก [53] [54]สิ่งนี้ทำให้ไมโครโปรเซสเซอร์ซิงโครนัสมีอัตราสัญญาณนาฬิกาตั้งแต่สิบเมกะเฮิรตซ์ไปจนถึงหลายกิกะเฮิรตซ์ นอกจากนี้ ความสามารถในการสร้างทรานซิสเตอร์ขนาดเล็กมากบน IC ได้เพิ่มความซับซ้อนและจำนวนทรานซิสเตอร์ใน CPU ตัวเดียวหลายเท่า แนวโน้มที่สังเกตได้อย่างกว้างขวางนี้อธิบายโดยกฎของมัวร์ซึ่งพิสูจน์แล้วว่าเป็นตัวทำนายที่แม่นยำอย่างเป็นธรรมของการเติบโตของความซับซ้อนของ CPU (และ IC อื่นๆ) จนถึงปี 2016 [55] [56]

แม้ว่าความซับซ้อน ขนาด โครงสร้างและรูปแบบทั่วไปของ CPU จะเปลี่ยนไปอย่างมากตั้งแต่ปี 1950 [57]การออกแบบและฟังก์ชันพื้นฐานไม่ได้เปลี่ยนแปลงไปมากนัก ซีพียูทั่วไปเกือบทั้งหมดในปัจจุบันสามารถอธิบายได้อย่างแม่นยำว่าเป็นเครื่องที่จัดเก็บโปรแกรมโดย von Neumann [58] [b]ในขณะที่กฎของมัวร์ไม่มีอยู่อีกต่อไป ความกังวลได้เกิดขึ้นเกี่ยวกับขีดจำกัดของเทคโนโลยีทรานซิสเตอร์วงจรรวม การย่อขนาดอย่างสุดโต่งของประตูอิเล็กทรอนิกส์ทำให้เกิดผลกระทบของปรากฏการณ์ เช่น การอพยพด้วยไฟฟ้าและการรั่วไหลของระดับต่ำกว่า มีความสำคัญมากขึ้น[60] [61]ความกังวลที่ใหม่กว่าเหล่านี้เป็นหนึ่งในหลายปัจจัยที่ทำให้นักวิจัยตรวจสอบวิธีการคำนวณแบบใหม่ เช่นคอมพิวเตอร์ควอนตัมตลอดจนขยายการใช้ความขนานและวิธีการอื่นๆ ที่ขยายประโยชน์ของแบบจำลองฟอนนอยมันน์แบบคลาสสิก

การดำเนินการ

การทำงานพื้นฐานของ CPU ส่วนใหญ่ โดยไม่คำนึงถึงรูปแบบทางกายภาพ คือการรันลำดับของคำสั่งที่เก็บไว้ซึ่งเรียกว่าโปรแกรม คำแนะนำในการที่จะดำเนินการจะถูกเก็บไว้ในชนิดของหน่วยความจำคอมพิวเตอร์ เกือบทั้งหมดเป็นไปตามซีพียูเรียกถอดรหัสและดำเนินการตามขั้นตอนในการดำเนินงานของพวกเขาซึ่งเป็นที่รู้จักกันเป็นวงจรการเรียนการสอน

หลังจากการดำเนินการของการเรียนการสอนที่ซ้ำกระบวนการทั้งหมดที่มีการเรียนการสอนรอบถัดไปได้ตามปกติในการเรียกคำสั่งถัดไปในลำดับเนื่องจากความคุ้มค่าเพิ่มขึ้นในส่วนโปรแกรมเคาน์เตอร์หากดำเนินการคำสั่งข้าม ตัวนับโปรแกรมจะได้รับการแก้ไขเพื่อให้มีที่อยู่ของคำสั่งที่ข้ามไปและการทำงานของโปรแกรมจะดำเนินต่อไปตามปกติ ใน CPU ที่ซับซ้อนมากขึ้น สามารถดึงข้อมูล ถอดรหัส และดำเนินการคำสั่งหลายคำสั่งพร้อมกันได้ ส่วนนี้อธิบายสิ่งที่เรียกโดยทั่วไปว่า " ไปป์ไลน์ RISC แบบคลาสสิก " ซึ่งพบได้ทั่วไปในซีพียูธรรมดาๆ ที่ใช้ในอุปกรณ์อิเล็กทรอนิกส์จำนวนมาก (มักเรียกว่าไมโครคอนโทรลเลอร์) โดยส่วนใหญ่ละเลยบทบาทที่สำคัญของแคช CPU และขั้นตอนการเข้าถึงของไปป์ไลน์

คำสั่งบางคำสั่งจะจัดการกับตัวนับโปรแกรมแทนที่จะสร้างข้อมูลผลลัพธ์โดยตรง โดยทั่วไปคำสั่งดังกล่าวจะเรียกว่า "กระโดด" และช่วยให้การทำงานของโปรแกรมง่ายขึ้น เช่น การวนซ้ำการเรียกใช้โปรแกรมแบบมีเงื่อนไข (ผ่านการใช้การข้ามแบบมีเงื่อนไข) และการมีอยู่ของฟังก์ชัน[c]ในโปรเซสเซอร์บางตัว คำแนะนำอื่น ๆ จะเปลี่ยนสถานะของบิตในรีจิสเตอร์ "แฟล็ก". แฟล็กเหล่านี้สามารถใช้เพื่อกำหนดลักษณะการทำงานของโปรแกรม เนื่องจากมักบ่งชี้ถึงผลลัพธ์ของการดำเนินการต่างๆ ตัวอย่างเช่น ในตัวประมวลผลดังกล่าว คำสั่ง "เปรียบเทียบ" จะประเมินค่าสองค่าและตั้งค่าหรือล้างบิตในการลงทะเบียนแฟล็กเพื่อระบุว่าค่าใดมีค่ามากกว่าหรือเท่ากัน แฟล็กเหล่านี้สามารถใช้โดยคำสั่งกระโดดในภายหลังเพื่อกำหนดโฟลว์ของโปรแกรม

ดึงข้อมูล

ขั้นตอนแรก ดึงข้อมูล เกี่ยวข้องกับการดึงคำสั่ง (ซึ่งแสดงด้วยตัวเลขหรือลำดับของตัวเลข) จากหน่วยความจำของโปรแกรม ตำแหน่งของคำสั่ง (ที่อยู่) ในหน่วยความจำโปรแกรมถูกกำหนดโดยตัวนับโปรแกรม (PC เรียกว่า "ตัวชี้คำสั่ง" ในไมโครโปรเซสเซอร์ Intel x86 ) ซึ่งเก็บหมายเลขที่ระบุที่อยู่ของคำสั่งถัดไปที่จะดึงข้อมูล หลังจากดึงข้อมูลคำสั่งแล้ว พีซีจะเพิ่มขึ้นตามความยาวของคำสั่ง เพื่อให้มีที่อยู่ของคำสั่งถัดไปในลำดับ[NS]บ่อยครั้ง คำสั่งที่จะดึงข้อมูลจะต้องดึงมาจากหน่วยความจำที่ค่อนข้างช้า ทำให้ CPU หยุดทำงานในขณะที่รอคำสั่งที่จะส่งคืน ปัญหานี้แก้ไขได้เป็นส่วนใหญ่ในโปรเซสเซอร์สมัยใหม่โดยแคชและสถาปัตยกรรมไปป์ไลน์ (ดูด้านล่าง)

ถอดรหัส

คำสั่งที่ CPU ดึงมาจากหน่วยความจำเป็นตัวกำหนดว่า CPU จะทำอะไร ในขั้นตอนถอดรหัส ดำเนินการโดยวงจรถอดรหัสไบนารีที่เรียกว่าตัวถอดรหัสคำสั่ง คำสั่งจะถูกแปลงเป็นสัญญาณที่ควบคุมส่วนอื่นๆ ของ CPU

วิธีการตีความคำสั่งถูกกำหนดโดยสถาปัตยกรรมชุดคำสั่งของ CPU (ISA) [e]บ่อยครั้ง กลุ่มของบิตหนึ่งกลุ่ม (นั่นคือ "ฟิลด์") ภายในคำสั่ง เรียกว่า opcode ระบุว่าการดำเนินการใดที่จะดำเนินการ ในขณะที่ฟิลด์ที่เหลือมักจะให้ข้อมูลเพิ่มเติมที่จำเป็นสำหรับการดำเนินการ เช่น ตัวถูกดำเนินการ ถูกดำเนินการเหล่านั้นอาจจะถูกกำหนดเป็นค่าคงที่ (เรียกว่าค่าทันที) หรือเป็นที่ตั้งของค่าที่อาจจะมีการลงทะเบียนหน่วยประมวลผลหรือที่อยู่หน่วยความจำตามที่กำหนดโดยบางโหมด

ในการออกแบบ CPU บางตัว ตัวถอดรหัสคำสั่งจะถูกนำไปใช้เป็นวงจรถอดรหัสไบนารีแบบเดินสายที่ไม่สามารถเปลี่ยนแปลงได้ ในอีกทางหนึ่งไมโครโปรแกรมใช้เพื่อแปลคำสั่งเป็นชุดสัญญาณคอนฟิกูเรชันของ CPU ที่ใช้ตามลำดับบนพัลส์สัญญาณนาฬิกาหลายอัน ในบางกรณี หน่วยความจำที่เก็บไมโครโปรแกรมสามารถเขียนซ้ำได้ ทำให้สามารถเปลี่ยนวิธีที่ CPU ถอดรหัสคำสั่งได้

ดำเนินการ

หลังจากขั้นตอนการดึงข้อมูลและถอดรหัสแล้ว ขั้นตอนการดำเนินการจะถูกดำเนินการ ขึ้นอยู่กับสถาปัตยกรรมของ CPU ซึ่งอาจประกอบด้วยการดำเนินการเดียวหรือลำดับของการกระทำ ระหว่างการดำเนินการแต่ละครั้ง สัญญาณควบคุมจะเปิดใช้งานหรือปิดใช้งานส่วนต่างๆ ของ CPU ด้วยระบบไฟฟ้า เพื่อให้สามารถทำงานได้ทั้งหมดหรือบางส่วนตามต้องการ การดำเนินการจะเสร็จสิ้น โดยทั่วไปแล้วจะตอบสนองต่อสัญญาณนาฬิกา บ่อยครั้งที่ผลลัพธ์ถูกเขียนลงในการลงทะเบียน CPU ภายในเพื่อการเข้าถึงอย่างรวดเร็วตามคำแนะนำที่ตามมา ในกรณีอื่น ๆ ผลลัพธ์ที่ได้อาจจะเขียนไปช้า แต่น้อยราคาแพงและความจุสูงหน่วยความจำหลัก

ตัวอย่างเช่น หากต้องดำเนินการคำสั่งเพิ่มเติม รีจิสเตอร์ที่มีตัวถูกดำเนินการ (ตัวเลขที่จะรวม) จะถูกเปิดใช้งาน เช่นเดียวกับส่วนของหน่วยตรรกะทางคณิตศาสตร์ (ALU) ที่ทำการบวก เมื่อพัลส์นาฬิกาเกิดขึ้น ตัวถูกดำเนินการจะไหลจากแหล่งที่ลงทะเบียนไปยัง ALU และผลรวมจะปรากฏที่เอาต์พุต ในพัลส์สัญญาณนาฬิกาที่ตามมา ส่วนประกอบอื่นๆ จะถูกเปิดใช้งาน (และปิดใช้งาน) เพื่อย้ายเอาต์พุต (ผลรวมของการดำเนินการ) ไปยังที่จัดเก็บ (เช่น รีจิสเตอร์หรือหน่วยความจำ) หากผลรวมที่เป็นผลลัพธ์มีขนาดใหญ่เกินไป (กล่าวคือ มากกว่าขนาดคำเอาต์พุตของ ALU) ค่าสถานะโอเวอร์โฟลว์เลขคณิตจะถูกตั้งค่า ซึ่งส่งผลต่อการดำเนินการครั้งต่อไป

โครงสร้างและการใช้งาน

บล็อกไดอะแกรมของคอมพิวเตอร์ตัวประมวลผลเดียว-CPU พื้นฐาน เส้นสีดำแสดงถึงการไหลของข้อมูล ในขณะที่เส้นสีแดงแสดงถึงการไหลของการควบคุม ลูกศรระบุทิศทางการไหล

เดินสายเข้าไปในวงจรของ CPU เป็นชุดของการดำเนินงานขั้นพื้นฐานก็สามารถดำเนินการที่เรียกว่าชุดคำสั่ง การดำเนินการดังกล่าวอาจเกี่ยวข้องกับ ตัวอย่างเช่น การบวกหรือลบตัวเลขสองตัว การเปรียบเทียบตัวเลขสองตัว หรือการกระโดดไปยังส่วนอื่นของโปรแกรม การเรียนการสอนแต่ละคนเป็นตัวแทนจากการผสมผสานเอกลักษณ์ของบิตที่เรียกว่าภาษาเครื่องopcode ขณะประมวลผลคำสั่ง CPU จะถอดรหัส opcode (ผ่านตัวถอดรหัสไบนารี) ลงในสัญญาณควบคุมซึ่งควบคุมการทำงานของ CPU คำสั่งภาษาเครื่องที่สมบูรณ์ประกอบด้วย opcode และในหลายกรณี บิตเพิ่มเติมที่ระบุอาร์กิวเมนต์สำหรับการดำเนินการ (เช่น ตัวเลขที่จะรวมในกรณีของการดำเนินการเพิ่มเติม) การเพิ่มระดับความซับซ้อน โปรแกรมภาษาเครื่องคือชุดคำสั่งภาษาเครื่องที่ CPU ดำเนินการ

การดำเนินการทางคณิตศาสตร์จริงสำหรับแต่ละคำสั่งจะดำเนินการโดยวงจรลอจิกเชิงผสมภายในโปรเซสเซอร์ของ CPU ที่เรียกว่าหน่วยคำนวณหรือลอจิกหรือ ALU โดยทั่วไปแล้ว CPU จะดำเนินการตามคำสั่งโดยดึงข้อมูลจากหน่วยความจำ โดยใช้ ALU เพื่อดำเนินการ แล้วเก็บผลลัพธ์ไว้ในหน่วยความจำ นอกเหนือจากคำแนะนำสำหรับการคำนวณทางคณิตศาสตร์และตรรกะจำนวนเต็มแล้ว ยังมีคำสั่งเครื่องอื่นๆ อีกมากมาย เช่น คำแนะนำสำหรับการโหลดข้อมูลจากหน่วยความจำและการจัดเก็บกลับ การดำเนินการแยกสาขา และการดำเนินการทางคณิตศาสตร์กับตัวเลขทศนิยมที่ดำเนินการโดยหน่วยจุดลอยตัวของ CPU (FPU) ). [62]

หน่วยควบคุม

หน่วยควบคุม (CU) เป็นส่วนประกอบของ CPU ที่นำการดำเนินงานของหน่วยประมวลผลที่ โดยจะบอกหน่วยความจำ เลขคณิตและลอจิกของคอมพิวเตอร์ และอุปกรณ์อินพุตและเอาต์พุตว่าจะตอบสนองต่อคำสั่งที่ส่งไปยังโปรเซสเซอร์อย่างไร

มันควบคุมการทำงานของหน่วยอื่น ๆ โดยการให้สัญญาณเวลาและการควบคุม ทรัพยากรคอมพิวเตอร์ส่วนใหญ่ได้รับการจัดการโดยจุฬาฯ มันชี้นำการไหลของข้อมูลระหว่าง CPU และอุปกรณ์อื่นๆ จอห์น von Neumannรวมหน่วยควบคุมเป็นส่วนหนึ่งของสถาปัตยกรรม von Neumann ในการออกแบบคอมพิวเตอร์สมัยใหม่ โดยทั่วไปแล้วหน่วยควบคุมจะเป็นส่วนภายในของ CPU โดยมีบทบาทและการทำงานโดยรวมไม่เปลี่ยนแปลงตั้งแต่เปิดตัว [63]

หน่วยลอจิกเลขคณิต

การแสดงสัญลักษณ์ของ ALU และสัญญาณอินพุตและเอาต์พุต

ตรรกะทางคณิตศาสตร์หน่วย (ALU) เป็นวงจรดิจิตอลภายในหน่วยประมวลผลที่มีประสิทธิภาพจำนวนเต็มคณิตศาสตร์และตรรกะบิตการดำเนินงาน อินพุตของ ALU คือคำข้อมูลที่ต้องดำเนินการ (เรียกว่าตัวถูกดำเนินการ ) ข้อมูลสถานะจากการทำงานก่อนหน้า และรหัสจากชุดควบคุมที่ระบุว่าต้องดำเนินการใด ขึ้นอยู่กับคำสั่งที่กำลังดำเนินการ ตัวถูกดำเนินการอาจมาจากการลงทะเบียน CPU ภายในหรือหน่วยความจำภายนอก หรืออาจเป็นค่าคงที่ที่สร้างโดย ALU เอง

เมื่อสัญญาณอินพุตทั้งหมดตกลงและแพร่กระจายผ่านวงจร ALU ผลลัพธ์ของการดำเนินการที่ดำเนินการจะปรากฏที่เอาต์พุตของ ALU ผลลัพธ์ประกอบด้วยทั้งคำข้อมูล ซึ่งอาจจัดเก็บไว้ในรีจิสเตอร์หรือหน่วยความจำ และข้อมูลสถานะที่โดยทั่วไปจะจัดเก็บไว้ในรีจิสเตอร์ CPU ภายในพิเศษที่สงวนไว้สำหรับวัตถุประสงค์นี้

หน่วยสร้างที่อยู่

หน่วยที่อยู่รุ่น ( AGU ) บางครั้งเรียกว่าหน่วยคำนวณอยู่ ( ACU ) [64]เป็นหน่วยดำเนินการภายในของ CPU ที่คำนวณอยู่ที่ใช้โดย CPU ในการเข้าถึงหน่วยความจำหลักด้วยการจัดการการคำนวณที่อยู่ที่จัดการโดยวงจรแยกที่ทำงานควบคู่ไปกับส่วนที่เหลือของ CPU จำนวนรอบของCPU ที่จำเป็นสำหรับการดำเนินการคำสั่งต่างๆ ของเครื่องจึงลดลง นำมาซึ่งการปรับปรุงประสิทธิภาพ

ในขณะที่ดำเนินการต่างๆ ซีพียูจำเป็นต้องคำนวณที่อยู่หน่วยความจำที่จำเป็นสำหรับการดึงข้อมูลจากหน่วยความจำ ตัวอย่างเช่นต้องคำนวณตำแหน่งในหน่วยความจำขององค์ประกอบอาร์เรย์ก่อนที่ CPU จะสามารถดึงข้อมูลจากตำแหน่งหน่วยความจำจริงได้ ผู้คำนวณอยู่รุ่นที่เกี่ยวข้องกับการที่แตกต่างกันจำนวนเต็มดำเนินการทางคณิตศาสตร์เช่นบวกลบการดำเนินงานแบบโมดูโลหรือกะบิตบ่อยครั้ง การคำนวณที่อยู่หน่วยความจำเกี่ยวข้องกับคำสั่งเครื่องที่ใช้งานทั่วไปมากกว่าหนึ่งคำสั่ง ซึ่งไม่จำเป็นต้องถอดรหัสและดำเนินการอย่างรวดเร็ว. ด้วยการรวม AGU เข้ากับการออกแบบ CPU ร่วมกับการแนะนำคำสั่งเฉพาะที่ใช้ AGU การคำนวณการสร้างที่อยู่แบบต่างๆ สามารถถ่ายออกจากส่วนที่เหลือของ CPU และมักจะสามารถดำเนินการได้อย่างรวดเร็วในวงจร CPU เดียว

ความสามารถของ AGU ขึ้นอยู่กับ CPU โดยเฉพาะอย่างยิ่งและสถาปัตยกรรมดังนั้น AGU บางตัวจึงใช้และเปิดเผยการคำนวณที่อยู่มากขึ้น ในขณะที่บาง AGU มีคำแนะนำเฉพาะขั้นสูงที่สามารถดำเนินการกับตัวถูกดำเนินการหลายตัวพร้อมกัน นอกจากนี้ สถาปัตยกรรมของ CPU บางตัวยังมี AGU หลายตัว จึงสามารถดำเนินการคำนวณที่อยู่ได้มากกว่าหนึ่งรายการพร้อมๆ กัน นำมาซึ่งการปรับปรุงประสิทธิภาพเพิ่มเติมโดยใช้ประโยชน์จากลักษณะsuperscalarของการออกแบบ CPU ขั้นสูง ตัวอย่างเช่นIntelรวม AGU หลายตัวไว้ในSandy BridgeและHaswell microarchitectures ซึ่งเพิ่มแบนด์วิดท์ของระบบย่อยหน่วยความจำ CPU โดยอนุญาตให้ดำเนินการคำสั่งการเข้าถึงหน่วยความจำหลายคำสั่งพร้อมกัน

หน่วยจัดการหน่วยความจำ (MMU)

ไมโครโปรเซสเซอร์จำนวนมาก (ในมาร์ทโฟนและแล็ปท็อปคอมพิวเตอร์เซิร์ฟเวอร์) มีหน่วยจัดการหน่วยความจำที่อยู่ตรรกะแปลเป็นที่อยู่ RAM ที่มีอยู่จริงให้การป้องกันหน่วยความจำและเพจความสามารถที่มีประโยชน์สำหรับหน่วยความจำเสมือน โปรเซสเซอร์ที่ง่ายกว่า โดยเฉพาะไมโครคอนโทรลเลอร์มักจะไม่มี MMU

แคช

แคช CPU [65]เป็นแคชฮาร์ดแวร์ที่ใช้โดยหน่วยประมวลผลกลาง (CPU) ของคอมพิวเตอร์เพื่อลดค่าใช้จ่ายเฉลี่ย (เวลาหรือพลังงาน) ในการเข้าถึงข้อมูลจากหน่วยความจำหลักแคชคือมีขนาดเล็กหน่วยความจำได้เร็วขึ้นใกล้ชิดกับCore Processorซึ่งร้านค้าสำเนาของข้อมูลจากบ่อยครั้งที่ใช้หลักตำแหน่งหน่วยความจำ CPU ส่วนใหญ่มีแคชอิสระที่แตกต่างกัน รวมถึงคำสั่งและแคชข้อมูลซึ่งโดยปกติแล้วแคชข้อมูลจะถูกจัดเป็นลำดับชั้นของระดับแคชที่มากกว่า (L1, L2, L3, L4 เป็นต้น)

CPU ที่ทันสมัย ​​(เร็ว) ทั้งหมด (มีข้อยกเว้นเฉพาะบางประการ[66] ) มีแคช CPU หลายระดับ CPU ตัวแรกที่ใช้แคชมีแคชเพียงระดับเดียวเท่านั้น ไม่เหมือนกับแคชระดับ 1 ในภายหลัง โดยจะไม่ถูกแบ่งออกเป็น L1d (สำหรับข้อมูล) และ L1i (สำหรับคำแนะนำ) ซีพียูปัจจุบันเกือบทั้งหมดที่มีแคชมีแคช L1 แยก พวกเขายังมีแคช L2 และสำหรับโปรเซสเซอร์ขนาดใหญ่ L3 แคชเช่นกัน แคช L2 มักจะไม่แยกและทำหน้าที่เป็นที่เก็บทั่วไปสำหรับแคช L1 ที่แยกแล้ว ทุกคอร์ของโปรเซสเซอร์แบบมัลติคอร์มีแคช L2 เฉพาะ และโดยทั่วไปจะไม่ใช้ร่วมกันระหว่างคอร์ แคช L3 และแคชระดับสูงกว่านั้นใช้ร่วมกันระหว่างคอร์และไม่ถูกแยกออก ปัจจุบันแคช L4 นั้นผิดปกติ และโดยทั่วไปแล้วจะอยู่ในหน่วยความจำเข้าถึงโดยสุ่มแบบไดนามิก(DRAM) แทนที่จะเป็นหน่วยความจำเข้าถึงโดยสุ่มแบบคงที่ (SRAM) บนไดย์หรือชิปที่แยกจากกัน นั่นคือกรณีในอดีตของ L1 ในขณะที่ชิปที่ใหญ่กว่านั้นอนุญาตให้รวมเข้าด้วยกันและโดยทั่วไปแล้วระดับแคชทั้งหมด ยกเว้นที่เป็นไปได้ของระดับสุดท้าย แคชระดับพิเศษแต่ละระดับมีแนวโน้มที่จะใหญ่ขึ้นและได้รับการปรับให้เหมาะสมแตกต่างกัน

มีแคชประเภทอื่นๆ อยู่ (ซึ่งไม่นับรวมใน "ขนาดแคช" ของแคชที่สำคัญที่สุดที่กล่าวถึงข้างต้น) เช่นบัฟเฟอร์ lookaside การแปล (TLB) ที่เป็นส่วนหนึ่งของหน่วยการจัดการหน่วยความจำ (MMU) ที่ CPU ส่วนใหญ่มี

โดยทั่วไปแคชจะมีขนาดกำลังสอง: 2, 8, 16 เป็นต้นKiBหรือMiB (สำหรับขนาดที่ไม่ใช่ L1) ที่ใหญ่กว่า แม้ว่าIBM z13จะมีแคชคำสั่ง 96 KiB L1 [67]

อัตรานาฬิกา

ซีพียูส่วนใหญ่เป็นวงจรซิงโครนัส ซึ่งหมายความว่าใช้สัญญาณนาฬิกาเพื่อเร่งการทำงานตามลำดับ สัญญาณนาฬิกาที่ผลิตโดยภายนอกวงจรออสซิลที่สร้างจำนวนที่สอดคล้องกันของพัลส์ในแต่ละวินาทีในรูปแบบของธาตุคลื่นสี่เหลี่ยมความถี่ของพัลส์นาฬิกาเป็นตัวกำหนดอัตราที่ CPU ดำเนินการคำสั่ง ดังนั้น ยิ่งนาฬิกาเร็วขึ้น คำสั่งที่ CPU จะดำเนินการในแต่ละวินาทีก็จะยิ่งมากขึ้น

เพื่อให้แน่ใจว่า CPU ทำงานอย่างถูกต้อง ระยะเวลาสัญญาณนาฬิกาจะนานกว่าเวลาสูงสุดที่จำเป็นสำหรับสัญญาณทั้งหมดที่จะเผยแพร่ (เคลื่อนที่) ผ่าน CPU ในการตั้งค่าช่วงเวลานาฬิกาเป็นค่าที่สูงกว่าความล่าช้าในการแพร่กระจายกรณีที่แย่ที่สุดเป็นไปได้ที่จะออกแบบ CPU ทั้งหมดและวิธีการย้ายข้อมูลรอบ "ขอบ" ของสัญญาณนาฬิกาที่เพิ่มขึ้นและลดลง มีข้อได้เปรียบในการลดความซับซ้อนของ CPU อย่างมาก ทั้งจากมุมมองการออกแบบและมุมมองการนับส่วนประกอบ อย่างไรก็ตาม ยังมีข้อเสียอยู่ตรงที่ CPU ทั้งหมดต้องรอในองค์ประกอบที่ช้าที่สุด แม้ว่าบางส่วนของ CPU จะเร็วกว่ามากก็ตาม ข้อจำกัดนี้ได้รับการชดเชยเป็นส่วนใหญ่โดยวิธีการต่างๆ ในการเพิ่ม CPU ที่ทำงานขนานกัน (ดูด้านล่าง)

อย่างไรก็ตาม การปรับปรุงสถาปัตยกรรมเพียงอย่างเดียวไม่ได้แก้ไขข้อบกพร่องทั้งหมดของ CPU แบบซิงโครนัสทั่วโลก ตัวอย่างเช่น สัญญาณนาฬิกาอาจมีความล่าช้าของสัญญาณไฟฟ้าอื่นๆ อัตรานาฬิกาที่สูงขึ้นใน CPU ที่ซับซ้อนมากขึ้นทำให้ยากต่อการรักษาสัญญาณนาฬิกาในเฟส (ซิงโครไนซ์) ทั่วทั้งยูนิต สิ่งนี้ทำให้ซีพียูสมัยใหม่จำนวนมากต้องการสัญญาณนาฬิกาที่เหมือนกันหลายตัวเพื่อหลีกเลี่ยงการหน่วงสัญญาณเดียวอย่างมีนัยสำคัญพอที่จะทำให้ CPU ทำงานผิดปกติ ปัญหาสำคัญอีกประการหนึ่ง เนื่องจากอัตราสัญญาณนาฬิกาเพิ่มขึ้นอย่างมากคือปริมาณความร้อนที่CPU กระจายไป. นาฬิกาที่เปลี่ยนแปลงตลอดเวลาทำให้ส่วนประกอบหลายอย่างสลับไปมาไม่ว่าจะกำลังใช้งานอยู่หรือไม่ก็ตาม โดยทั่วไป ส่วนประกอบที่มีการสลับใช้พลังงานมากกว่าองค์ประกอบในสถานะคงที่ ดังนั้นเมื่ออัตราสัญญาณนาฬิกาเพิ่มขึ้น การใช้พลังงานก็เพิ่มขึ้นเช่นกัน ทำให้ CPU ต้องการการกระจายความร้อนมากขึ้นในรูปแบบของโซลูชันการ ระบายความร้อนของCPU

วิธีหนึ่งในการจัดการกับการสลับส่วนประกอบที่ไม่จำเป็นเรียกว่าclock gatingซึ่งเกี่ยวข้องกับการปิดสัญญาณนาฬิกาไปยังส่วนประกอบที่ไม่จำเป็น (ปิดการใช้งานอย่างมีประสิทธิภาพ) อย่างไรก็ตาม การดำเนินการนี้มักถือว่าทำได้ยาก ดังนั้นจึงไม่เห็นการใช้งานทั่วไปนอกเหนือจากการออกแบบที่ใช้พลังงานต่ำมาก สิ่งหนึ่งที่น่าออกแบบ CPU ล่าสุดที่ใช้ gating นาฬิกาที่กว้างขวางเป็น IBM PowerPC -based ซีนอนใช้ในXbox 360 ; ด้วยวิธีนี้ความต้องการพลังงานของ Xbox 360 จะลดลงอย่างมาก[68]อีกวิธีหนึ่งในการแก้ไขปัญหาบางอย่างเกี่ยวกับสัญญาณนาฬิกาทั่วโลกคือการลบสัญญาณนาฬิกาทั้งหมด ในขณะที่การลบสัญญาณนาฬิกาทั่วโลกทำให้กระบวนการออกแบบมีความซับซ้อนมากขึ้นในหลาย ๆ ด้าน การออกแบบแบบอะซิงโครนัส (หรือแบบไม่มีนาฬิกา) ก็มีข้อดีอย่างเห็นได้ชัดในด้านการใช้พลังงานและการกระจายความร้อนเมื่อเปรียบเทียบกับการออกแบบซิงโครนัสที่คล้ายคลึงกัน แม้ว่าจะค่อนข้างแปลก แต่ซีพียูแบบอะซิงโครนัสทั้งหมดถูกสร้างขึ้นโดยไม่ต้องใช้สัญญาณนาฬิกาทั่วโลก สองตัวอย่างที่โดดเด่นของเรื่องนี้เป็นARMสอดคล้องAMULETและMIPS MiniMIPS เข้ากันได้ R3000

แทนที่จะลบสัญญาณนาฬิกาโดยสิ้นเชิง การออกแบบ CPU บางตัวยอมให้บางส่วนของอุปกรณ์เป็นแบบอะซิงโครนัส เช่น การใช้ALUแบบอะซิงโครนัสร่วมกับไปป์ไลน์ซูเปอร์สเกลาร์เพื่อให้ได้ประสิทธิภาพทางคณิตศาสตร์ที่เพิ่มขึ้น แม้ว่าจะไม่ชัดเจนว่าการออกแบบแบบอะซิงโครนัสทั้งหมดสามารถทำได้ในระดับที่เทียบเท่าหรือดีกว่าแบบซิงโครนัสหรือไม่ แต่ก็เห็นได้ชัดว่าอย่างน้อยพวกเขาก็ทำได้ดีในการคำนวณทางคณิตศาสตร์ที่ง่ายกว่า นี้รวมกับการใช้พลังงานและความร้อนกระจายคุณสมบัติที่ยอดเยี่ยมของพวกเขาทำให้พวกเขามากเหมาะสำหรับคอมพิวเตอร์ที่ฝังตัว [69]

โมดูลควบคุมแรงดันไฟฟ้า

ซีพียูสมัยใหม่จำนวนมากมีโมดูลการจัดการพลังงานแบบได-อินทิเกรต ซึ่งควบคุมการจ่ายแรงดันไฟแบบออนดีมานด์ให้กับวงจรซีพียู ซึ่งช่วยให้รักษาสมดุลระหว่างประสิทธิภาพและการใช้พลังงาน

ช่วงจำนวนเต็ม

CPU ทุกตัวแสดงค่าตัวเลขในลักษณะเฉพาะ ตัวอย่างเช่น คอมพิวเตอร์ดิจิทัลยุคแรกบางรุ่นแสดงตัวเลขเป็นค่าระบบตัวเลขทศนิยม (ฐาน 10) ที่คุ้นเคยและบางเครื่องได้ใช้การแทนค่าที่ผิดปกติมากกว่า เช่นไตรภาค (ฐาน 3) เกือบทั้งหมดซีพียูที่ทันสมัยแทนตัวเลขในไบนารีรูปแบบกับแต่ละหลักเป็นตัวแทนโดยบางส่วนปริมาณทางกายภาพสองมูลค่าเช่น "สูง" หรือ "ต่ำ" แรงดันไฟฟ้า [NS]

คำหกบิตที่มีการแสดงค่าทศนิยมที่เข้ารหัสแบบไบนารี 40 ซีพียูที่ทันสมัยส่วนใหญ่ใช้ขนาดคำที่มีกำลังสอง เช่น 8, 16, 32 หรือ 64 บิต

ที่เกี่ยวข้องกับการแสดงตัวเลขคือขนาดและความแม่นยำของตัวเลขจำนวนเต็มที่ CPU สามารถแสดงได้ ในกรณีของ CPU ไบนารีนี้จะวัดจากจำนวนของบิต (ตัวเลขที่สำคัญของจำนวนเต็มเข้ารหัสไบนารี) ที่ CPU สามารถประมวลผลในการดำเนินการหนึ่งซึ่งเรียกกันว่าขนาดคำ , ความกว้างบิต , ความกว้างของข้อมูลเส้นทาง , จำนวนเต็มแม่นยำหรือขนาดจำนวนเต็มขนาดจำนวนเต็มของ CPU กำหนดช่วงของค่าจำนวนเต็มที่สามารถดำเนินการได้โดยตรง[g]ตัวอย่างเช่นCPU 8 บิตสามารถจัดการจำนวนเต็มที่แสดงด้วยแปดบิตได้โดยตรง ซึ่งมีช่วงของค่าจำนวนเต็มแบบไม่ต่อเนื่อง256 (2 8 )

ช่วงจำนวนเต็มยังสามารถส่งผลต่อจำนวนตำแหน่งหน่วยความจำที่ CPU สามารถระบุได้โดยตรง (ที่อยู่คือค่าจำนวนเต็มที่แสดงถึงตำแหน่งหน่วยความจำเฉพาะ) ตัวอย่างเช่น ถ้าไบนารี CPU ใช้ 32 บิตเพื่อแทนที่อยู่หน่วยความจำ ก็สามารถระบุตำแหน่งหน่วยความจำ2 32ตำแหน่งได้โดยตรง เพื่อหลีกเลี่ยงข้อจำกัดนี้และด้วยเหตุผลอื่นๆ CPU บางตัวใช้กลไก (เช่น การสลับช่องสัญญาณ ) ที่อนุญาตให้ระบุหน่วยความจำเพิ่มเติมได้

ซีพียูที่มีขนาดคำที่ใหญ่กว่านั้นต้องการวงจรที่มากขึ้นและผลที่ตามมาก็คือตัวเครื่องที่ใหญ่กว่า มีราคาที่มากกว่า และใช้พลังงานมากกว่า (และทำให้เกิดความร้อนมากขึ้น) ด้วยเหตุนี้ไมโครคอนโทรลเลอร์ 4 หรือ 8 บิตที่เล็กกว่าจึงมักใช้ในแอปพลิเคชันสมัยใหม่ แม้ว่าจะมีซีพียูที่มีขนาดคำที่ใหญ่กว่ามาก (เช่น 16, 32, 64, แม้แต่ 128 บิต) อย่างไรก็ตาม เมื่อต้องการประสิทธิภาพที่สูงขึ้น ประโยชน์ของขนาดคำที่ใหญ่ขึ้น (ช่วงข้อมูลที่ใหญ่ขึ้นและช่องว่างที่อยู่) อาจมีมากกว่าข้อเสีย CPU สามารถมีเส้นทางข้อมูลภายในสั้นกว่าขนาดคำเพื่อลดขนาดและค่าใช้จ่าย ตัวอย่างเช่น แม้ว่าชุดคำสั่งIBM System/360 จะเป็นชุดคำสั่ง 32 บิต แต่ System/360 Model 30และModel 40มีเส้นทางข้อมูล 8 บิตในหน่วยลอจิคัลเลขคณิต ดังนั้นการเพิ่มแบบ 32 บิตจำเป็นต้องมีสี่รอบ หนึ่งรอบสำหรับแต่ละตัวถูกดำเนินการ 8 บิต และแม้ว่าชุดคำสั่งMotorola 68000 ซีรีส์จะเป็นชุดคำสั่ง 32 บิตโมโตโรล่า 68000และโมโตโรล่า 68010มี 16 บิตเส้นทางข้อมูลในหน่วยตรรกะทางคณิตศาสตร์เพื่อให้ 32 บิตเพิ่มต้องสองรอบ

เพื่อให้ได้รับประโยชน์จากความยาวบิตทั้งที่ต่ำกว่าและสูงกว่าชุดคำสั่งจำนวนมากจึงมีความกว้างบิตที่แตกต่างกันสำหรับข้อมูลจำนวนเต็มและจุดลอยตัว ทำให้ซีพียูที่ใช้ชุดคำสั่งนั้นมีความกว้างบิตที่แตกต่างกันสำหรับส่วนต่างๆ ของอุปกรณ์ ตัวอย่างเช่นชุดคำสั่งIBM System/360ส่วนใหญ่เป็นแบบ 32 บิต แต่รองรับค่าทศนิยม 64 บิตเพื่อให้มีความแม่นยำและช่วงตัวเลขทศนิยมมากขึ้น[30] System/360 Model 65 มีตัวบวก 8 บิตสำหรับเลขฐานสองทศนิยมและจุดคงที่ และตัวบวก 60 บิตสำหรับเลขคณิตทศนิยม[70] การออกแบบ CPU ในภายหลังจำนวนมากใช้ความกว้างบิตแบบผสมที่คล้ายกัน โดยเฉพาะอย่างยิ่งเมื่อโปรเซสเซอร์มีไว้เพื่อการใช้งานทั่วไปที่ต้องการความสมดุลที่เหมาะสมของจำนวนเต็มและความสามารถจุดลอยตัว

ความเท่าเทียม

แบบจำลองของ CPU ย่อยซึ่งใช้เวลาสิบห้ารอบนาฬิกาจึงจะครบสามคำสั่ง

คำอธิบายการทำงานพื้นฐานของ CPU ที่นำเสนอในส่วนก่อนหน้านี้จะอธิบายถึงรูปแบบที่ง่ายที่สุดที่ CPU สามารถทำได้ CPU ประเภทนี้มักเรียกว่าsubscalarทำงานและดำเนินการคำสั่งหนึ่งคำสั่งกับข้อมูลครั้งละหนึ่งหรือสองชิ้น ซึ่งน้อยกว่าหนึ่งคำสั่งต่อรอบสัญญาณนาฬิกา ( IPC < 1 )

กระบวนการนี้ก่อให้เกิดความไร้ประสิทธิภาพในซีพียู subscalar เนื่องจากมีการดำเนินการคำสั่งครั้งละหนึ่งคำสั่งเท่านั้น CPU ทั้งหมดจึงต้องรอให้คำสั่งนั้นสมบูรณ์ก่อนที่จะดำเนินการตามคำสั่งถัดไป เป็นผลให้ CPU ย่อยจะ "วางสาย" ตามคำแนะนำซึ่งใช้เวลามากกว่าหนึ่งรอบสัญญาณนาฬิกาเพื่อดำเนินการให้เสร็จสิ้น แม้แต่การเพิ่มหน่วยปฏิบัติการที่สอง(ดูด้านล่าง) ก็ไม่ได้ปรับปรุงประสิทธิภาพมากนัก แทนที่จะแขวนทางเดินเดียว ตอนนี้มีทางเดินสองทางถูกวางสาย และจำนวนของทรานซิสเตอร์ที่ไม่ได้ใช้เพิ่มขึ้น การออกแบบนี้ ซึ่งทรัพยากรการดำเนินการของ CPU สามารถดำเนินการได้ครั้งละหนึ่งคำสั่งเท่านั้น สามารถเข้าถึงประสิทธิภาพสเกลาร์เท่านั้น(หนึ่งคำสั่งต่อรอบสัญญาณนาฬิกา, IPC = 1). อย่างไรก็ตาม ประสิทธิภาพมักจะเป็น subscalar (น้อยกว่าหนึ่งคำสั่งต่อรอบสัญญาณนาฬิกา, IPC < 1 )

ความพยายามที่จะบรรลุสเกลาร์และประสิทธิภาพที่ดีขึ้นได้ส่งผลให้เกิดวิธีการออกแบบที่หลากหลายซึ่งทำให้ CPU ทำงานเชิงเส้นน้อยลงและขนานกันมากขึ้น เมื่อพูดถึงความขนานใน CPU โดยทั่วไปจะใช้คำศัพท์สองคำเพื่อจำแนกเทคนิคการออกแบบเหล่านี้:

แต่ละวิธีมีความแตกต่างกันทั้งในด้านวิธีการนำไปใช้ เช่นเดียวกับประสิทธิภาพที่เกี่ยวข้องในการเพิ่มประสิทธิภาพของ CPU สำหรับแอปพลิเคชัน [ชม]

ความขนานระดับคำสั่ง

ไปป์ไลน์ห้าขั้นตอนพื้นฐาน ในกรณีที่ดีที่สุด ไปป์ไลน์นี้สามารถรักษาอัตราความสมบูรณ์ของคำสั่งหนึ่งคำสั่งต่อรอบสัญญาณนาฬิกา

วิธีที่ง่ายที่สุดวิธีหนึ่งในการเพิ่มความขนานกันคือการเริ่มขั้นตอนแรกของการดึงข้อมูลและถอดรหัสคำสั่งก่อนที่คำสั่งก่อนหน้าจะเสร็จสิ้น เทคนิคนี้เป็นเทคนิคที่เรียกว่าไพพ์ไลน์คำสั่งและใช้ในซีพียูเอนกประสงค์สมัยใหม่เกือบทั้งหมด การวางท่ออนุญาตให้ดำเนินการคำสั่งหลายคำสั่งพร้อมกันโดยแบ่งเส้นทางการดำเนินการออกเป็นขั้นตอนที่ไม่ต่อเนื่อง การแยกนี้สามารถเปรียบเทียบได้กับสายการประกอบ ซึ่งคำสั่งจะสมบูรณ์มากขึ้นในแต่ละขั้นตอน จนกว่าจะออกจากไปป์ไลน์การดำเนินการและเลิกใช้

อย่างไรก็ตาม การวางท่อนำความเป็นไปได้สำหรับสถานการณ์ที่จำเป็นต้องใช้ผลลัพธ์ของการดำเนินการก่อนหน้านี้เพื่อดำเนินการต่อไปให้เสร็จสิ้น เงื่อนไขมักเรียกว่าข้อขัดแย้งในการพึ่งพาข้อมูล ดังนั้นตัวประมวลผลแบบไปป์ไลน์จะต้องตรวจสอบเงื่อนไขเหล่านี้และหน่วงเวลาส่วนหนึ่งของไปป์ไลน์หากจำเป็น ตัวประมวลผลแบบไปป์ไลน์สามารถกลายเป็นสเกลาร์ได้เกือบทั้งหมด โดยถูกยับยั้งโดยไพพ์ไลน์ที่หยุดชะงักเท่านั้น (คำสั่งที่ใช้มากกว่าหนึ่งรอบสัญญาณนาฬิกาในหนึ่งสเตจ)

ไปป์ไลน์ซุปเปอร์สเกลาร์อย่างง่าย ด้วยการดึงและจัดส่งคำสั่งครั้งละสองคำสั่ง คำสั่งสูงสุดสองคำสั่งต่อรอบสัญญาณนาฬิกาจะเสร็จสมบูรณ์ได้

การปรับปรุงในการวางท่อคำสั่งทำให้เวลาว่างของส่วนประกอบ CPU ลดลงอีก การออกแบบที่จะกล่าวว่าเป็น superscalar ได้แก่ ท่อการเรียนการสอนที่ยาวนานและหลายที่เหมือนหน่วยปฏิบัติเช่นหน่วยภาระร้านค้า , หน่วยเลขคณิตตรรกะ , หน่วยจุดลอยและหน่วยรุ่นอยู่ [71]ในไปป์ไลน์ superscalar คำแนะนำจะถูกอ่านและส่งผ่านไปยังโปรแกรมเลือกจ่ายงาน ซึ่งจะตัดสินว่าคำสั่งสามารถดำเนินการแบบขนานได้หรือไม่ (พร้อมกัน) ถ้าเป็นเช่นนั้น พวกเขาถูกส่งไปยังหน่วยปฏิบัติการ ส่งผลให้ดำเนินการพร้อมกัน โดยทั่วไป จำนวนคำสั่งที่ CPU superscalar จะเสร็จสมบูรณ์ในหนึ่งรอบจะขึ้นอยู่กับจำนวนของคำสั่งที่สามารถส่งไปยังหน่วยปฏิบัติการได้พร้อมกัน

ปัญหาส่วนใหญ่ในการออกแบบสถาปัตยกรรม CPU superscalar อยู่ที่การสร้างโปรแกรมเลือกจ่ายงานที่มีประสิทธิภาพ ผู้มอบหมายงานจะต้องสามารถระบุได้อย่างรวดเร็วว่าสามารถดำเนินการตามคำสั่งแบบคู่ขนานได้หรือไม่ รวมถึงการสั่งงานในลักษณะที่จะทำให้หน่วยปฏิบัติการไม่ว่างมากที่สุด นี้ต้องการให้คำแนะนำและท่อที่เต็มไปได้บ่อยเท่าที่เป็นไปได้และต้องใช้จำนวนมากแคช CPUนอกจากนี้ยังทำให้เกิดอันตรายเทคนิคเช่น -avoiding ทำนายสาขา , การดำเนินการเก็งกำไร , ลงทะเบียนเปลี่ยนชื่อ , ออกจากคำสั่งการดำเนินการและหน่วยความจำในการทำธุรกรรมสำคัญต่อการรักษาระดับประสิทธิภาพให้อยู่ในระดับสูง ด้วยการพยายามคาดการณ์สาขา (หรือเส้นทาง) คำสั่งแบบมีเงื่อนไขจะใช้ CPU สามารถลดจำนวนครั้งที่ไปป์ไลน์ทั้งหมดต้องรอจนกว่าคำสั่งแบบมีเงื่อนไขจะเสร็จสมบูรณ์ การดำเนินการแบบเก็งกำไรมักจะให้ประสิทธิภาพเพิ่มขึ้นเล็กน้อยโดยดำเนินการบางส่วนของรหัสที่อาจไม่จำเป็นหลังจากการดำเนินการตามเงื่อนไขเสร็จสิ้น การดำเนินการที่ไม่อยู่ในลำดับจะจัดเรียงใหม่ตามลำดับซึ่งคำสั่งถูกดำเนินการเพื่อลดความล่าช้าเนื่องจากการพึ่งพาข้อมูล นอกจากนี้ในกรณีของสตรีมคำสั่งเดียว, สตรีมข้อมูลหลายรายการ—กรณีที่ต้องประมวลผลข้อมูลจำนวนมากจากประเภทเดียวกัน— โปรเซสเซอร์สมัยใหม่สามารถปิดการใช้งานบางส่วนของไปป์ไลน์ ดังนั้นเมื่อดำเนินการคำสั่งเดียวหลายครั้ง CPU จะข้ามขั้นตอนการดึงข้อมูลและถอดรหัส ซึ่งจะทำให้ประสิทธิภาพเพิ่มขึ้นอย่างมาก ในบางโอกาส โดยเฉพาะอย่างยิ่งในโปรแกรมเอ็นจิ้นที่ซ้ำซากจำเจ เช่น ซอฟต์แวร์สร้างวิดีโอและการประมวลผลภาพถ่าย

ในกรณีที่ CPU เพียงบางส่วนเป็นซุปเปอร์สเกลาร์ ส่วนที่ไม่ได้รับผลการปฏิบัติงานอันเนื่องมาจากการหยุดชะงักของการจัดตารางเวลา Intel P5 Pentiumมี ALU ซูเปอร์สเกลาร์สองตัวซึ่งสามารถยอมรับคำสั่งหนึ่งคำสั่งต่อรอบสัญญาณนาฬิกาในแต่ละครั้ง แต่ FPU ไม่สามารถทำได้ ดังนั้น P5 จึงเป็นจำนวนเต็ม superscalar แต่ไม่ใช่จุดลอยตัว superscalar P6ผู้สืบทอดของ Intel ต่อสถาปัตยกรรม P5 ได้เพิ่มความสามารถพิเศษ superscalar ให้กับคุณลักษณะจุดลอยตัว

การออกแบบไปป์ไลน์และซูเปอร์สเกลาร์ที่เรียบง่ายช่วยเพิ่ม ILP ของ CPU โดยอนุญาตให้รันคำสั่งในอัตราที่สูงกว่าหนึ่งคำสั่งต่อรอบสัญญาณนาฬิกา การออกแบบ CPU ที่ทันสมัยส่วนใหญ่นั้นอย่างน้อยก็ค่อนข้างซุปเปอร์สเกลาร์ และซีพียูเอนกประสงค์เกือบทั้งหมดที่ออกแบบมาในทศวรรษที่ผ่านมานั้นเป็นซูเปอร์สเกลาร์ ในปีต่อๆ มา ความสำคัญของการออกแบบคอมพิวเตอร์ ILP ระดับสูงได้ถูกย้ายออกจากฮาร์ดแวร์ของ CPU ไปเป็นอินเทอร์เฟซซอฟต์แวร์ หรือสถาปัตยกรรมชุดคำสั่ง (ISA) กลยุทธ์ของคำคำสั่งที่ยาวมาก (VLIW) ทำให้ ILP บางตัวถูกบอกเป็นนัยโดยซอฟต์แวร์ ซึ่งลดการทำงานของ CPU ในการเพิ่ม ILP และลดความซับซ้อนในการออกแบบ

ความขนานระดับงาน

อีกกลยุทธ์หนึ่งในการบรรลุผลการปฏิบัติงานคือการดำเนินการหลายเธรดหรือหลายกระบวนการพร้อมกัน พื้นที่ของการวิจัยครั้งนี้เป็นที่รู้จักกันประมวลผลแบบขนาน [72]ในอนุกรมวิธานของฟลินน์กลยุทธ์นี้เรียกว่าสตรีมคำสั่งหลายรายการ สตรีมข้อมูลหลายรายการ (MIMD) [73]

เทคโนโลยีหนึ่งที่ใช้เพื่อจุดประสงค์นี้คือมัลติโปรเซสเซอร์ (MP) [74]รสชาติเริ่มต้นของเทคโนโลยีนี้เรียกว่าsymmetric multiprocessing (SMP) ซึ่งซีพียูจำนวนน้อยแบ่งปันมุมมองที่เชื่อมโยงกันของระบบหน่วยความจำ ในรูปแบบนี้ CPU แต่ละตัวมีฮาร์ดแวร์เพิ่มเติมเพื่อรักษามุมมองหน่วยความจำที่ทันสมัยอยู่เสมอ ด้วยการหลีกเลี่ยงมุมมองที่เก่าของหน่วยความจำ ซีพียูสามารถทำงานร่วมกันในโปรแกรมเดียวกันและโปรแกรมสามารถย้ายจาก CPU หนึ่งไปยังอีกเครื่องหนึ่งได้ เพื่อเพิ่มจำนวนของ CPU ที่ร่วมมือเกินกว่าจำนวนหนึ่ง แผนงาน เช่นการเข้าถึงหน่วยความจำที่ไม่สม่ำเสมอ (NUMA) และโปรโตคอลการเชื่อมโยงกันตามไดเร็กทอรีถูกนำมาใช้ในปี 1990 ระบบ SMP ถูกจำกัดให้ใช้กับ CPU จำนวนน้อย ในขณะที่ระบบ NUMA ถูกสร้างขึ้นด้วยโปรเซสเซอร์นับพัน เริ่มแรก มัลติโพรเซสซิงถูกสร้างขึ้นโดยใช้ซีพียูและบอร์ดแบบแยกหลายตัวเพื่อใช้การเชื่อมต่อระหว่างโปรเซสเซอร์ เมื่อโปรเซสเซอร์และการเชื่อมต่อถึงกันทั้งหมดถูกนำมาใช้ในชิปตัวเดียว เทคโนโลยีนี้เรียกว่าการประมวลผลหลายตัวในระดับชิป (CMP) และชิปตัวเดียวในฐานะโปรเซสเซอร์แบบมัลติคอร์

ภายหลังได้รับการยอมรับว่ามีความขนานกันที่ละเอียดกว่าในโปรแกรมเดียว โปรแกรมเดียวอาจมีหลายเธรด (หรือฟังก์ชัน) ที่สามารถดำเนินการแยกกันหรือทำงานพร้อมกันได้ ตัวอย่างแรกสุดของเทคโนโลยีนี้ใช้การประมวลผลอินพุต/เอาต์พุตเช่นการเข้าถึงหน่วยความจำโดยตรงเป็นเธรดที่แยกจากเธรดการคำนวณ แนวทางทั่วไปของเทคโนโลยีนี้ถูกนำมาใช้ในปี 1970 เมื่อระบบได้รับการออกแบบให้รันเธรดการคำนวณหลายรายการพร้อมกัน เทคโนโลยีนี้เรียกว่ามัลติเธรด(มอนแทนา). วิธีนี้ถือว่าคุ้มค่ากว่าการประมวลผลหลายตัว เนื่องจากมีการจำลองส่วนประกอบจำนวนน้อยภายใน CPU เพื่อรองรับ MT เมื่อเทียบกับ CPU ทั้งหมดในกรณีของ MP ใน MT หน่วยดำเนินการและระบบหน่วยความจำรวมถึงแคชจะถูกแชร์ระหว่างหลายเธรด ข้อเสียของ MT คือการสนับสนุนฮาร์ดแวร์สำหรับมัลติเธรดนั้นมองเห็นได้สำหรับซอฟต์แวร์มากกว่าของ MP ดังนั้นซอฟต์แวร์ผู้ควบคุมเช่นระบบปฏิบัติการจะต้องได้รับการเปลี่ยนแปลงครั้งใหญ่เพื่อรองรับ MT MT ประเภทหนึ่งที่นำมาใช้เรียกว่าtemporal multithreadingโดยที่หนึ่งเธรดถูกเรียกใช้งานจนกระทั่งหยุดรอข้อมูลเพื่อส่งคืนจากหน่วยความจำภายนอก ในโครงการนี้ CPU จะแล้วรีบเปลี่ยนบริบทไปยังหัวข้ออื่นซึ่งพร้อมที่จะทำงานสลับมักจะทำในรอบสัญญาณนาฬิกาของ CPU หนึ่งเช่นUltraSPARC T1 MT อีกประเภทหนึ่งคือการทำงานแบบมัลติเธรดพร้อมกันโดยคำสั่งจากหลายเธรดจะถูกดำเนินการแบบขนานกันภายในรอบสัญญาณนาฬิกาของ CPU หนึ่งรอบ

เป็นเวลาหลายทศวรรษตั้งแต่ทศวรรษ 1970 ถึงต้นทศวรรษ 2000 การมุ่งเน้นในการออกแบบ CPU สำหรับใช้งานทั่วไปที่มีประสิทธิภาพสูงส่วนใหญ่เป็นการบรรลุ ILP ที่สูงผ่านเทคโนโลยีต่างๆ เช่น การวางท่อ แคช การดำเนินการ superscalar การดำเนินการนอกคำสั่ง ฯลฯ แนวโน้มนี้มีผลใหญ่ ซีพียูกำลังหิวเช่น Intel Pentium 4 ในช่วงต้นทศวรรษ 2000 นักออกแบบ CPU ถูกขัดขวางไม่ให้บรรลุประสิทธิภาพที่สูงขึ้นจากเทคนิค ILP เนื่องจากความแตกต่างที่เพิ่มขึ้นระหว่างความถี่ในการทำงานของ CPU และความถี่ในการทำงานของหน่วยความจำหลัก ตลอดจนการกระจายพลังงานของ CPU ที่เพิ่มขึ้นอันเนื่องมาจากเทคนิค ILP ที่ลึกลับมากขึ้น

นักออกแบบ CPU ยืมแนวคิดจากตลาดคอมพิวเตอร์เชิงพาณิชย์ เช่นการประมวลผลธุรกรรมซึ่งประสิทธิภาพโดยรวมของหลายโปรแกรม หรือที่เรียกว่าการประมวลผลปริมาณงาน มีความสำคัญมากกว่าประสิทธิภาพของเธรดหรือกระบวนการเดียว

การพลิกกลับของการเน้นนี้เห็นได้จากการเพิ่มจำนวนการออกแบบโปรเซสเซอร์แบบดูอัลและคอร์ที่มากขึ้น และโดยเฉพาะอย่างยิ่ง การออกแบบใหม่ของ Intel ที่คล้ายกับสถาปัตยกรรมP6 ที่มีซูเปอร์สเกลาร์น้อยกว่า การออกแบบที่ล่าช้าในตระกูลโปรเซสเซอร์หลายตระกูลแสดง CMP รวมถึงx86-64 OpteronและAthlon 64 X2 , SPARC UltraSPARC T1 , IBM POWER4และPOWER5รวมถึงวิดีโอเกมคอนโซล CPU หลายตัว เช่น การออกแบบ PowerPC แบบ Triple-core ของXbox 360และPlayStation 3ของ 7-core ไมโครโปรเซสเซอร์มือถือ

ความเท่าเทียมกันของข้อมูล

กระบวนทัศน์ของโปรเซสเซอร์ที่พบได้ทั่วไปน้อยกว่าแต่มีความสำคัญมากขึ้น (และโดยแท้จริงแล้ว การคำนวณโดยทั่วไป) เกี่ยวข้องกับความขนานของข้อมูล โปรเซสเซอร์ที่กล่าวถึงก่อนหน้านี้ทั้งหมดเรียกว่าอุปกรณ์สเกลาร์บางประเภท[i]ตามที่ระบุในชื่อ ตัวประมวลผลเวกเตอร์จัดการกับข้อมูลหลายชิ้นในบริบทของคำสั่งเดียว สิ่งนี้แตกต่างกับตัวประมวลผลสเกลาร์ ซึ่งจัดการกับข้อมูลเพียงชิ้นเดียวสำหรับทุกคำสั่ง การใช้อนุกรมวิธานของฟลินน์แผนการจัดการข้อมูลทั้งสองนี้โดยทั่วไปจะเรียกว่าสตรีมคำสั่งเดียวสตรีมข้อมูลหลายรายการ ( SIMD ) และสตรีมคำสั่งเดียวสตรีมข้อมูลเดียว ( SISD) ตามลำดับ ยูทิลิตี้ที่ยอดเยี่ยมในการสร้างตัวประมวลผลที่จัดการกับเวกเตอร์ของข้อมูลอยู่ในการเพิ่มประสิทธิภาพงานซึ่งมักจะต้องมีการดำเนินการเดียวกัน (เช่น ผลรวม หรือผลิตภัณฑ์ดอท ) เพื่อดำเนินการกับชุดข้อมูลขนาดใหญ่ ตัวอย่างคลาสสิกของงานประเภทนี้ ได้แก่แอปพลิเคชันมัลติมีเดีย (ภาพ วิดีโอ และเสียง) ตลอดจนงานทางวิทยาศาสตร์และวิศวกรรมหลายประเภทในขณะที่ตัวประมวลผลแบบสเกลาร์ต้องทำกระบวนการทั้งหมดในการดึง ถอดรหัส และดำเนินการคำสั่งและค่าในชุดข้อมูลทั้งหมด ตัวประมวลผลแบบเวกเตอร์สามารถดำเนินการเพียงครั้งเดียวกับชุดข้อมูลที่ค่อนข้างใหญ่ด้วยคำสั่งเดียว สิ่งนี้จะเกิดขึ้นได้ก็ต่อเมื่อแอปพลิเคชันมีแนวโน้มที่จะต้องใช้หลายขั้นตอนซึ่งใช้การดำเนินการเดียวกับชุดข้อมูลขนาดใหญ่

โปรเซสเซอร์เวคเตอร์ในยุคแรกๆ ส่วนใหญ่ เช่นCray-1เกี่ยวข้องกับการวิจัยทางวิทยาศาสตร์และแอปพลิเคชั่นการเข้ารหัสเกือบทั้งหมด อย่างไรก็ตาม เนื่องจากมัลติมีเดียได้เปลี่ยนไปสู่สื่อดิจิทัลเป็นส่วนใหญ่ ความต้องการ SIMD บางรูปแบบในโปรเซสเซอร์เอนกประสงค์จึงมีความสำคัญ ไม่นานหลังจากการรวมหน่วยทศนิยมเริ่มกลายเป็นเรื่องธรรมดาในโปรเซสเซอร์เอนกประสงค์ ข้อกำหนดสำหรับและการใช้งานของหน่วยปฏิบัติการ SIMD ก็เริ่มปรากฏขึ้นสำหรับโปรเซสเซอร์เอนกประสงค์เช่นกัน[ เมื่อไหร่? ]ข้อกำหนด SIMD แรกเริ่มเหล่านี้ - เช่นMultimedia Acceleration eXtensions (MAX) ของ HP และMMXของ Intel- เป็นจำนวนเต็มเท่านั้น นี้พิสูจน์แล้วว่าเป็นอุปสรรคสำคัญสำหรับนักพัฒนาซอฟต์แวร์บางเนื่องจากหลายโปรแกรมที่ได้รับประโยชน์จาก SIMD หลักจัดการกับจุดลอยตัวเลข นักพัฒนาได้ปรับปรุงและปรับปรุงการออกแบบในช่วงแรกๆ เหล่านี้ให้กลายเป็นข้อกำหนด SIMD สมัยใหม่ทั่วไปบางส่วน ซึ่งมักจะเกี่ยวข้องกับสถาปัตยกรรมชุดคำสั่งเดียว(ISA) ตัวอย่างสมัยใหม่ที่โดดเด่น ได้แก่Streaming SIMD Extensions (SSE) ของ Intel และAltiVecที่เกี่ยวข้องกับ PowerPC (หรือที่เรียกว่า VMX) [NS]

ซีพียูเสมือน

การประมวลผลแบบคลาวด์อาจเกี่ยวข้องกับการแบ่งย่อยการทำงานของ CPU ออกเป็นหน่วยประมวลผลกลางเสมือน[75] ( vCPU s [76] )

โฮสต์คือเครื่องเสมือนที่เทียบเท่ากับเครื่องจริง ซึ่งระบบเสมือนกำลังทำงานอยู่ [77]เมื่อมีเครื่องหลายทางกายภาพในการดำเนินงานและการบริหารจัดการควบคู่เป็นทั้งจัดกลุ่มคอมพิวเตอร์และทรัพยากรหน่วยความจำในรูปแบบคลัสเตอร์ ในบางระบบ คุณสามารถเพิ่มและลบออกจากคลัสเตอร์แบบไดนามิกได้ ทรัพยากรที่มีอยู่ในโฮสต์และคลัสเตอร์ระดับสามารถแบ่งออกไปในสระว่ายน้ำทรัพยากรปรับเมล็ด

ประสิทธิภาพ

ประสิทธิภาพหรือความเร็วของหน่วยประมวลผลขึ้นอยู่กับปัจจัยอื่น ๆ อีกมากมายอัตรานาฬิกา (ได้รับโดยทั่วไปหลายรายการเฮิรตซ์ ) และคำแนะนำต่อนาฬิกา (IPC) ซึ่งร่วมกันเป็นปัจจัยสำหรับคำสั่งต่อวินาที (IPS) ที่ ซีพียูสามารถทำงานได้ [78] ค่า IPS ที่รายงานจำนวนมากได้แสดงอัตราการดำเนินการ "สูงสุด" ในลำดับคำสั่งปลอมที่มีสาขาน้อย ในขณะที่ปริมาณงานที่สมจริงประกอบด้วยชุดคำสั่งและแอปพลิเคชันผสมกัน ซึ่งบางค่าใช้เวลาในการดำเนินการนานกว่าค่าอื่นๆ ประสิทธิภาพของลำดับชั้นหน่วยความจำยังส่งผลกระทบอย่างมากต่อประสิทธิภาพของโปรเซสเซอร์ ซึ่งเป็นปัญหาที่แทบไม่ได้รับการพิจารณาในการคำนวณ MIPS เนื่องจากปัญหาเหล่านี้ การทดสอบที่ได้มาตรฐานต่างๆ ซึ่งมักเรียกว่า"เกณฑ์มาตรฐาน"เพื่อจุดประสงค์นี้‍—‌เช่นSPECint ‍—‌ ได้รับการพัฒนาขึ้นเพื่อพยายามวัดประสิทธิภาพการทำงานที่แท้จริงในการใช้งานทั่วไป

ประสิทธิภาพการประมวลผลของคอมพิวเตอร์เพิ่มขึ้นโดยใช้โปรเซสเซอร์แบบมัลติคอร์ ซึ่งโดยพื้นฐานแล้วจะเสียบโปรเซสเซอร์สองตัวขึ้นไป (เรียกว่าคอร์ในแง่นี้) ลงในวงจรรวมเดียว[79] ตามหลักการแล้วโปรเซสเซอร์แบบดูอัลคอร์จะมีประสิทธิภาพเกือบสองเท่าของโปรเซสเซอร์คอร์เดียว ในทางปฏิบัติ ประสิทธิภาพที่เพิ่มขึ้นนั้นน้อยกว่ามาก เพียงประมาณ 50% เนื่องจากอัลกอริธึมซอฟต์แวร์ที่ไม่สมบูรณ์และการนำไปใช้[80]การเพิ่มจำนวนคอร์ในโปรเซสเซอร์ (เช่น ดูอัลคอร์ ควอดคอร์ ฯลฯ) จะเพิ่มปริมาณงานที่สามารถจัดการได้ ซึ่งหมายความว่าขณะนี้โปรเซสเซอร์สามารถจัดการกับเหตุการณ์แบบอะซิงโครนัส การขัดจังหวะ ฯลฯ ได้จำนวนมาก ซึ่งอาจส่งผลกระทบต่อ CPU เมื่อถูกใช้งานหนัก แกนเหล่านี้เป็นชั้นต่างๆ ในโรงงานแปรรูป โดยแต่ละชั้นจะจัดการกับงานที่แตกต่างกัน บางครั้ง คอร์เหล่านี้จะจัดการงานเดียวกันกับคอร์ที่อยู่ติดกัน ถ้าคอร์เดียวไม่เพียงพอสำหรับจัดการข้อมูล

เนื่องจากความสามารถเฉพาะของ CPU สมัยใหม่ เช่นmultithreadingและuncore พร้อมกันซึ่งเกี่ยวข้องกับการแชร์ทรัพยากร CPU จริงโดยมุ่งเป้าไปที่การใช้งานที่เพิ่มขึ้น การตรวจสอบระดับประสิทธิภาพและการใช้ฮาร์ดแวร์จึงค่อยๆ กลายเป็นงานที่ซับซ้อนมากขึ้น [81]เพื่อเป็นการตอบสนอง CPU บางตัวใช้ตรรกะของฮาร์ดแวร์เพิ่มเติมที่ตรวจสอบการใช้งานจริงของส่วนต่างๆ ของ CPU และให้ตัวนับต่างๆ ที่ซอฟต์แวร์สามารถเข้าถึงได้ ตัวอย่างเป็นของ Intel ผลการดำเนินงานป้องกันและปราบปรามการตรวจสอบเทคโนโลยี [2]

ดูเพิ่มเติม

หมายเหตุ

  1. ^ ปัจจุบันมีการใช้วงจรรวมเพื่อใช้ซีพียูทั้งหมด ยกเว้นบางเครื่องที่ออกแบบมาให้ทนต่อคลื่นแม่เหล็กไฟฟ้าขนาดใหญ่ เช่น จากอาวุธนิวเคลียร์
  2. ^ ที่เรียกว่า "von Neumann" บันทึกอธิบายความคิดของโปรแกรมที่เก็บไว้ [59]ซึ่งตัวอย่างเช่นอาจจะเก็บไว้ในบัตร punchedเทปกระดาษหรือเทปแม่เหล็ก
  3. คอมพิวเตอร์ยุคแรกๆ บางเครื่อง เช่น Harvard Mark I ไม่สนับสนุนคำสั่ง "กระโดด" ใดๆ ซึ่งจำกัดความซับซ้อนของโปรแกรมที่สามารถทำงานได้อย่างมีประสิทธิภาพ สาเหตุส่วนใหญ่มาจากเหตุนี้เองที่คอมพิวเตอร์เหล่านี้มักไม่ได้รับการพิจารณาว่ามี CPU ที่เหมาะสม แม้ว่าจะมีความคล้ายคลึงกันอย่างใกล้ชิดกับคอมพิวเตอร์ที่จัดเก็บโปรแกรม
  4. ^ เนื่องจากตัวนับโปรแกรมนับที่อยู่หน่วยความจำและไม่ใช่คำสั่งมันจึงเพิ่มขึ้นตามจำนวนหน่วยหน่วยความจำที่คำคำสั่งประกอบด้วย ในกรณีของ ISA ของคำสั่งความยาวคงที่อย่างง่าย ค่านี้จะเป็นตัวเลขเดียวกันเสมอ ตัวอย่างเช่น คำคำสั่งแบบ 32 บิตที่มีความยาวคงที่ ISA ที่ใช้คำในหน่วยความจำ 8 บิตจะทำให้พีซีเพิ่มขึ้นสี่เสมอ (ยกเว้นในกรณีของการกระโดด) ISA ที่ใช้คำคำสั่งที่มีความยาวผันแปรจะเพิ่มพีซีด้วยจำนวนคำในหน่วยความจำที่สอดคล้องกับความยาวของคำสั่งสุดท้าย
  5. ^ เนื่องจากสถาปัตยกรรมชุดคำสั่งของ CPU เป็นพื้นฐานของอินเทอร์เฟซและการใช้งาน จึงมักใช้เป็นหมวดหมู่ของ "ประเภท" ของ CPU ตัวอย่างเช่น "PowerPC CPU" ใช้ PowerPC ISA บางรูปแบบ ระบบสามารถดำเนินการ ISA อื่นได้โดยการรันโปรแกรมจำลอง
  6. ^ แนวคิดทางกายภาพของแรงดันไฟฟ้าเป็นแบบแอนะล็อกโดยธรรมชาติ โดยมีค่าที่เป็นไปได้ไม่จำกัด เพื่อวัตถุประสงค์ในการแสดงเลขฐานสองทางกายภาพ จะมีการกำหนดช่วงแรงดันไฟฟ้าสองช่วง ช่วงหนึ่งสำหรับลอจิก '0' และอีกช่วงหนึ่งสำหรับลอจิก '1' ช่วงเหล่านี้กำหนดโดยการพิจารณาการออกแบบ เช่น ระยะขอบของสัญญาณรบกวน และลักษณะของอุปกรณ์ที่ใช้สร้าง CPU
  7. ^ แม้ว่าขนาดจำนวนเต็มของ CPU จะกำหนดขีดจำกัดของช่วงจำนวนเต็ม แต่สิ่งนี้สามารถ (และมักจะแก้ไขได้) โดยใช้เทคนิคซอฟต์แวร์และฮาร์ดแวร์ร่วมกัน เมื่อใช้หน่วยความจำเพิ่มเติม ซอฟต์แวร์สามารถแสดงจำนวนเต็มที่มากกว่าที่ CPU จะทำได้ บางครั้งชุดคำสั่งของ CPUจะอำนวยความสะดวกในการดำเนินการกับจำนวนเต็มที่มากกว่าที่จะแสดงโดยกำเนิดได้โดยการให้คำแนะนำเพื่อทำให้เลขคณิตจำนวนเต็มขนาดใหญ่ค่อนข้างเร็ว วิธีการจัดการกับจำนวนเต็มขนาดใหญ่นี้ช้ากว่าการใช้ CPU ที่มีขนาดจำนวนเต็มที่สูงกว่า แต่เป็นการประนีประนอมที่สมเหตุสมผลในกรณีที่การสนับสนุนช่วงจำนวนเต็มที่ต้องการโดยกำเนิดจะเป็นการลดต้นทุน ดูเลขคณิตที่แม่นยำตามอำเภอใจสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับจำนวนเต็มขนาดใดก็ได้ที่สนับสนุนโดยซอฟต์แวร์ล้วนๆ
  8. ^ ทั้ง ILPมิได้ TLPเป็นเนื้อแท้ที่เหนือกว่าในช่วงอื่น ๆ ; พวกมันเป็นเพียงวิธีการที่แตกต่างกันในการเพิ่ม CPU ที่ขนานกัน ด้วยเหตุนี้ ทั้งสองจึงมีข้อดีและข้อเสีย ซึ่งมักจะถูกกำหนดโดยประเภทของซอฟต์แวร์ที่โปรเซสเซอร์ตั้งใจให้ใช้งาน ซีพียู TLP สูงมักใช้ในแอปพลิเคชันที่สามารถแยกออกเป็นแอปพลิเคชันขนาดเล็กจำนวนมากได้ ซึ่งเรียกว่า "ปัญหาคู่ขนานที่น่าอับอาย " บ่อยครั้ง ปัญหาการคำนวณที่สามารถแก้ไขได้อย่างรวดเร็วด้วยกลยุทธ์การออกแบบ TLP สูง เช่น การประมวลผลหลายตัวแบบสมมาตรต้องใช้เวลามากขึ้นอย่างมากในอุปกรณ์ ILP ระดับสูง เช่น CPU superscalar และในทางกลับกัน
  9. ก่อนหน้านี้ คำว่าสเกลาร์ถูกใช้เพื่อเปรียบเทียบการนับ IPC ที่จ่ายได้ด้วยวิธีการต่างๆ ของ ILP คำนี้ใช้ในความหมายทางคณิตศาสตร์อย่างเคร่งครัดเพื่อเปรียบเทียบกับเวกเตอร์ ดูเกลา (คณิตศาสตร์)และเวกเตอร์ (เรขาคณิต)
  10. ^ แม้ว่า SSE/SSE2/SSE3 จะแทนที่ MMX ในโปรเซสเซอร์อเนกประสงค์ของ Intel แต่การออกแบบ IA-32 ในภายหลังยังคงรองรับ MMX ซึ่งมักจะทำได้โดยการจัดเตรียมฟังก์ชัน MMX ส่วนใหญ่ไว้กับฮาร์ดแวร์ตัวเดียวกันซึ่งสนับสนุนชุดคำสั่ง SSE ที่กว้างขวางกว่ามาก

อ้างอิง

  1. ^ Kuck เดวิด (1978) คอมพิวเตอร์และการคำนวณ 1 John Wiley & Sons, Inc. p. 12. ISBN 978-0471027164.
  2. อรรถกับ โธมัส วิลฮาล์ม; โรมัน Dementiev; แพทริค เฟย์ (18 ธันวาคม 2014) "ผลการดำเนินงานของ Intel เคาน์เตอร์จอภาพ - วิธีที่ดีกว่าการวัดการใช้งาน CPU" ซอฟต์แวร์. intel.com สืบค้นเมื่อ17 กุมภาพันธ์ 2558 .
  3. ^ Liebowitz, Kusek สายลับแมตต์, คริส, Rynardt (2014) ประสิทธิภาพของ VMware vSphere: การออกแบบ CPU, หน่วยความจำ, ที่เก็บข้อมูล และเครือข่ายสำหรับเวิร์คโหลดที่เน้นประสิทธิภาพ ไวลีย์. NS. 68. ISBN 978-1-118-00819-5.CS1 maint: multiple names: authors list (link)
  4. ^ Regan, เจอราร์ด (2008) ประวัติโดยย่อของคอมพิวเตอร์ NS. 66. ISBN 978-1880000834. สืบค้นเมื่อ26 พฤศจิกายน 2557 .
  5. ^ Weik มาร์ตินเอช (1955) "การสำรวจระบบคอมพิวเตอร์ดิจิตอลอิเล็กทรอนิกส์ในประเทศ" . ห้องปฏิบัติการวิจัยขีปนาวุธ . Cite journal requires |journal= (help)
  6. อรรถa b Weik, Martin H. (1961) "การสำรวจครั้งที่สามของระบบคอมพิวเตอร์ดิจิตอลอิเล็กทรอนิกส์ในประเทศ" . ห้องปฏิบัติการวิจัยขีปนาวุธ . Cite journal requires |journal= (help)
  7. ^ "ทีละนิด" . วิทยาลัยฮาเวอร์ฟอร์ด เก็บถาวรจากต้นฉบับเมื่อ 13 ตุลาคม 2555 . สืบค้นเมื่อ1 สิงหาคม 2558 .
  8. ^ "ร่างแรกของรายงานใน EDVAC" (PDF) มัวร์โรงเรียนวิศวกรรมไฟฟ้า , มหาวิทยาลัยเพนซิล พ.ศ. 2488 Cite journal requires |journal= (help)
  9. ^ มหาวิทยาลัยสแตนฟอ "ประวัติศาสตร์คอมพิวเตอร์สมัยใหม่" . Stanford สารานุกรมปรัชญา สืบค้นเมื่อ25 กันยายน 2558 .
  10. ^ "วันเกิด ENIAC" . สำนักพิมพ์เอ็มไอที 9 กุมภาพันธ์ 2559 . สืบค้นเมื่อ17 ตุลาคม 2018 .
  11. ^ Enticknap, Nicholas (Summer 1998), "Computing's Golden Jubilee" , Resurrection , The Computer Conservation Society (20), ISSN 0958-7403 , สืบค้นเมื่อ26 มิถุนายน 2019 
  12. ^ "เดอะ แมนเชสเตอร์ มาร์ค 1" . มหาวิทยาลัยแมนเชสเตอร์. สืบค้นเมื่อ25 กันยายน 2558 .
  13. ^ "รุ่นแรก" . พิพิธภัณฑ์ประวัติศาสตร์คอมพิวเตอร์. สืบค้นเมื่อ29 กันยายน 2558 .
  14. ^ "ประวัติวงจรรวม" . โนเบลไพรซ์. org สืบค้นเมื่อ29 กันยายน 2558 .
  15. ^ Turley จิม "การขับเคลื่อนด้วยไมโครโปรเซสเซอร์" . ที่ฝัง สืบค้นเมื่อ15 พฤศจิกายน 2558 .
  16. ^ "คู่มือโปรเซสเซอร์มือถือ – ฤดูร้อนปี 2013" . อำนาจของ Android 2013-06-25 . สืบค้นเมื่อ15 พฤศจิกายน 2558 .
  17. ^ "มาตรา 250: ไมโครโปรเซสเซอร์และของเล่น: ความรู้เบื้องต้นเกี่ยวกับระบบคอมพิวเตอร์" . มหาวิทยาลัยมิชิแกน. สืบค้นเมื่อ9 ตุลาคม 2018 .
  18. ^ "โปรเซสเซอร์ ARM946" . แขน. เก็บจากต้นฉบับเมื่อ 17 พฤศจิกายน 2558
  19. ^ "คอนราด ซูเซ่" . พิพิธภัณฑ์ประวัติศาสตร์คอมพิวเตอร์. สืบค้นเมื่อ29 กันยายน 2558 .
  20. ^ "เส้นเวลาของประวัติศาสตร์คอมพิวเตอร์: คอมพิวเตอร์" . พิพิธภัณฑ์ประวัติศาสตร์คอมพิวเตอร์. สืบค้นเมื่อ21 พฤศจิกายน 2558 .
  21. ^ ไวท์, สตีเฟน. "ประวัติโดยย่อของคอมพิวเตอร์ - คอมพิวเตอร์ยุคแรก" . สืบค้นเมื่อ21 พฤศจิกายน 2558 .
  22. ^ "มหาวิทยาลัยฮาร์วาร์ด - พันช์เทปกระดาษ" . พิพิธภัณฑ์ประวัติศาสตร์คอมพิวเตอร์. สืบค้นเมื่อ21 พฤศจิกายน 2558 .
  23. ^ "อะไรคือความแตกต่างระหว่างสถาปัตยกรรมฟอนนอยมันน์และสถาปัตยกรรมฮาร์วาร์ด?" . อาร์ม. สืบค้นเมื่อ22 พฤศจิกายน 2558 .
  24. ^ "ขั้นสูงสถาปัตยกรรมเพิ่มประสิทธิภาพ Atmel AVR CPU" แอตเมล. สืบค้นเมื่อ22 พฤศจิกายน 2558 .
  25. ^ "สวิตช์ ทรานซิสเตอร์ และรีเลย์" . บีบีซี. เก็บจากต้นฉบับเมื่อ 5 ธันวาคม 2559
  26. ^ "แนะนำทรานซิสเตอร์สุญญากาศ: อุปกรณ์ที่ไม่ทำอะไรเลย" . IEEE Spectrum 2014-06-23 . สืบค้นเมื่อ27 มกราคม 2019 .
  27. ^ ประสิทธิภาพของคอมพิวเตอร์คืออะไร? . สำนักพิมพ์วิชาการแห่งชาติ. 2554. ดอย : 10.17226/12980 . ISBN 978-0-309-15951-7. สืบค้นเมื่อ16 พฤษภาคม 2559 .
  28. ^ "1953: Transistorized Computers Emerge" . พิพิธภัณฑ์ประวัติศาสตร์คอมพิวเตอร์. สืบค้นเมื่อ3 มิถุนายน 2559 .
  29. ^ "IBM System/360 วันที่และลักษณะเฉพาะ" . ไอบีเอ็ม. 2003-01-23.
  30. อรรถเป็น Amdahl, GM ; Blaau, จอร์เจีย ; Brooks, FP Jr. (เมษายน 2507) "สถาปัตยกรรมของ IBM System/360" วารสารการวิจัยและพัฒนาไอบีเอ็ม . ไอบีเอ็ม . 8 (2): 87–101. ดอย : 10.1147/rd.82.0087 . ISSN 0018-8646 . 
  31. ^ บ รอดกิ้น, จอห์น. "50 ปีที่แล้ว IBM สร้างเมนเฟรมที่ช่วยส่งคนไปดวงจันทร์" . อาส เทคนิค. สืบค้นเมื่อ9 เมษายน 2559 .
  32. ^ คลาร์ก, กาวิน. "ทำไมจะไม่ให้คุณตาย? ของไอบีเอ็ม S / 360 และมรดกที่ 50" ทะเบียน. สืบค้นเมื่อ9 เมษายน 2559 .
  33. ^ "ออนไลน์ PDP-8 หน้าแรก, เรียกใช้ PDP-8" พีดีพี8 . สืบค้นเมื่อ25 กันยายน 2558 .
  34. ^ "ทรานซิสเตอร์ รีเลย์ และการควบคุมโหลดกระแสสูง" . มหาวิทยาลัยนิวยอร์ก . ITP คอมพิวเตอร์ทางกายภาพ สืบค้นเมื่อ9 เมษายน 2559 .
  35. ^ ลิลลี่พอล (2009/04/14) "ประวัติโดยย่อของซีพียู: 31 ปีที่น่ากลัวของ x86" พีซีเกมเมอร์. สืบค้นเมื่อ15 มิถุนายน 2559 .
  36. อรรถเป็น แพตเตอร์สัน เดวิด เอ.; เฮนเนสซี, จอห์น แอล.; ลารัส, เจมส์ อาร์. (1999). การจัดระเบียบคอมพิวเตอร์และการออกแบบ: อินเทอร์เฟซฮาร์ดแวร์/ซอฟต์แวร์ (2. ed., 3rd print. ed.) ซานฟรานซิสโก: คอฟมันน์ NS. 751 . ISBN 978-1558604285.
  37. ^ "1962: ระบบการบินและอวกาศเป็นครั้งแรกที่การใช้งานของวงจรรวมสำหรับคอมพิวเตอร์" พิพิธภัณฑ์ประวัติศาสตร์คอมพิวเตอร์. สืบค้นเมื่อ9 ตุลาคม 2018 .
  38. ^ "วงจรบูรณาการในอพอลโลบรรจุโปรแกรมเชื่อมโยงไปถึงดวงจันทร์" การบริหารการบินและอวกาศแห่งชาติ. สืบค้นเมื่อ9 ตุลาคม 2018 .
  39. ^ "ประกาศระบบ/370" . ไอบีเอ็มหอจดหมายเหตุ 2003-01-23 . สืบค้นเมื่อ25 ตุลาคม 2017 .
  40. ^ "ระบบ/370 รุ่น 155 (ต่อ)" . ไอบีเอ็มหอจดหมายเหตุ 2003-01-23 . สืบค้นเมื่อ25 ตุลาคม 2017 .
  41. ^ "รุ่นและตัวเลือก" . อุปกรณ์ดิจิตอลคอร์ปอเรชั่น PDP-8 สืบค้นเมื่อ15 มิถุนายน 2018 .
  42. ^ รอส น็อกซ์ บาสเซตต์ (2007). สู่ยุคดิจิตอล: ห้องปฏิบัติการวิจัย, บริษัท Start-up และการเพิ่มขึ้นของเทคโนโลยี จอห์นส์ฮอปกินส์สำนักพิมพ์มหาวิทยาลัย หน้า 127–128, 256 และ 314 ISBN 978-0-8018-6809-2.
  43. อรรถเป็น เคน เชอร์ริฟ "The Texas Instruments TMX 1795: ไมโครโปรเซสเซอร์ตัวแรกที่ถูกลืม" .
  44. ^ "ความเร็วและพลังในตระกูลลอจิก" ..
  45. ^ TJ Stonham "เทคนิคดิจิทัลลอจิก: หลักการและการปฏิบัติ" . พ.ศ. 2539 น. 174.
  46. ^ "1968: Silicon ประตูเทคโนโลยีที่พัฒนาขึ้นสำหรับของวงจรรวม" พิพิธภัณฑ์ประวัติศาสตร์คอมพิวเตอร์ .
  47. ^ อาร์เค บูเฮอร์ "คอมพิวเตอร์ MOS GP" . afips, pp.877, 1968 Proceedings of the Fall Joint Computer Conference, 1968 doi : 10.1109/AFIPS.1968.126
  48. ^ "LSI-11 คำอธิบายโมดูล" (PDF) คู่มือผู้ใช้ LSI-11, PDP-11/03 (ฉบับที่ 2) เมย์นาร์, แมสซาชูเซต: อุปกรณ์ดิจิตอลคอร์ปอเรชั่น พฤศจิกายน 2518 น. 4–3.
  49. ^ "1971: ไมโครผสานรวมฟังก์ชั่นของ CPU บนชิปตัวเดียว" พิพิธภัณฑ์ประวัติศาสตร์คอมพิวเตอร์ .
  50. ^ Margaret Rouse (27 มีนาคม 2550) "คำจำกัดความ: โปรเซสเซอร์แบบมัลติคอร์" . เทคทาร์เก็ท. สืบค้นเมื่อ6 มีนาคม 2556 .
  51. ^ ริชาร์ด Birkby "ประวัติโดยย่อของไมโครโปรเซสเซอร์" . พิพิธภัณฑ์คอมพิวเตอร์ . li เก็บถาวรจากต้นฉบับเมื่อ 23 กันยายน 2558 . สืบค้นเมื่อ13 ตุลาคม 2558 .
  52. ออสบอร์น, อดัม (1980). ความรู้เบื้องต้นเกี่ยวกับไมโครคอมพิวเตอร์ . เล่มที่ 1: แนวคิดพื้นฐาน (ฉบับที่ 2) เบิร์กลีย์ แคลิฟอร์เนีย: ออสบอร์น-แมคกรอว์ ฮิลล์ ISBN 978-0-931988-34-9. |volume= has extra text (help)
  53. ^ Zhislina วิกตอเรีย (2014/02/19) "เหตุใดความถี่ของ CPU จึงหยุดเติบโต" . อินเทล สืบค้นเมื่อ14 ตุลาคม 2558 .
  54. ^ "MOS ทรานซิสเตอร์ - วิศวกรรมไฟฟ้าและวิทยาศาสตร์คอมพิวเตอร์" (PDF) มหาวิทยาลัยแคลิฟอร์เนีย. สืบค้นเมื่อ14 ตุลาคม 2558 .
  55. ^ ซิโมไนต์, ทอม. “กฎของมัวร์ตายแล้ว แล้วไงต่อ” . รีวิวเทคโนโลยีเอ็มไอที สืบค้นเมื่อ2018-08-24 .
  56. ^ "ข้อความที่ตัดตอนมาจากการสนทนากับกอร์ดอนมัวร์: มัวร์กฎหมาย" (PDF) อินเทล 2005. เก็บถาวรจากต้นฉบับ(PDF)เมื่อ 2012-10-29 . สืบค้นเมื่อ2012-07-25 . Cite journal requires |journal= (help)
  57. ^ "ประวัติโดยละเอียดของโปรเซสเซอร์" . เทคขี้ยา. 15 ธันวาคม 2559.
  58. ^ Eigenmann รูดอล์ฟ; ลิลจา, เดวิด (1998). "ฟอน นอยมันน์ คอมพิวเตอร์" สารานุกรม Wiley ของวิศวกรรมไฟฟ้าและอิเล็กทรอนิกส์ . ดอย : 10.1002/047134608X.W1704 . ISBN 047134608X. S2CID  8197337 .
  59. ^ Aspray วิลเลียม (กันยายน 1990) "แนวคิดโปรแกรมที่เก็บไว้". IEEE Spectrum ฉบับที่ 27 หมายเลข 9. ดอย : 10.1109/6.58457 .
  60. ^ สรัสวดี, กฤษณะ. "แนวโน้มเทคโนโลยีวงจรรวม" (PDF) . สืบค้นเมื่อ15 มิถุนายน 2018 .
  61. ^ "ไฟฟ้ากระแสสลับ" . มหาวิทยาลัยเทคนิคตะวันออกกลาง. สืบค้นเมื่อ15 มิถุนายน 2018 .
  62. ^ เอียน วีนานด์ (3 กันยายน 2556) "วิทยาการคอมพิวเตอร์จากล่างขึ้นบน บทที่ 3 สถาปัตยกรรมคอมพิวเตอร์" (PDF) . bottomups.com . สืบค้นเมื่อ7 มกราคม 2558 .
  63. ^ "บทนำของหน่วยควบคุมและการออกแบบ" . กี๊กส์ฟอร์กีกส์ . 2018-09-24 . ที่ดึง 2021/01/12
  64. ^ คอร์เนลิแวน Berkel; แพทริก มิววิสเซ่น (12 มกราคม 2549) "ที่อยู่รุ่นหน่วยประมวลผล (การยื่นขอรับสิทธิบัตรสหรัฐ 2006010255 A1)" google.com . สืบค้นเมื่อ8 ธันวาคม 2014 .[ จำเป็นต้องตรวจสอบ ]
  65. ^ กาเบรียล ตอร์เรส (12 กันยายน 2550) "วิธีการทำงานของหน่วยความจำแคช" .[ จำเป็นต้องตรวจสอบ ]
  66. ^ CPU ตัวเร่งความเร็วหรือไมโครคอนโทรลเลอร์เฉพาะบางตัวไม่มีแคช เพื่อความรวดเร็ว หากจำเป็น/ต้องการ พวกเขายังคงมีหน่วยความจำ scratchpad บนชิปที่มีฟังก์ชันคล้ายกันในขณะที่ซอฟต์แวร์จัดการ เช่น ไมโครคอนโทรลเลอร์ จะดีกว่าสำหรับการใช้งานแบบเรียลไทม์แบบฮาร์ด มีแคชนั้นหรืออย่างน้อยก็ไม่มีแคช เช่นเดียวกับเวลาแฝงของหน่วยความจำหนึ่งระดับที่สามารถคาดการณ์ได้ [ จำเป็นต้องตรวจสอบ ]
  67. ^ "ไอบีเอ็ม Z13 และ IBM z13s รู้เบื้องต้นทางด้านเทคนิค" (PDF) ไอบีเอ็ม . มีนาคม 2559 น. 20. [ จำเป็นต้องตรวจสอบ ]
  68. บราวน์, เจฟฟรีย์ (2005). "แอพลิเคชันที่กำหนดเองการออกแบบซีพียู" IBM DeveloperWorks . สืบค้นเมื่อ2005-12-17 .
  69. ^ การ์ ไซด์ เจดี; เฟอร์เบอร์ เอสบี; ชุง, เอสเอช (1999). "AMULET3 เปิดเผย" . ภาควิชาวิทยาการคอมพิวเตอร์มหาวิทยาลัยแมนเชสเตอร์ . เก็บจากต้นฉบับเมื่อ 10 ธันวาคม 2548 Cite journal requires |journal= (help)
  70. ^ ไอบีเอ็มระบบ / 360 รุ่น 65 ลักษณะการทำงาน (PDF) ไอบีเอ็ม . กันยายน 2511 หน้า 8-9 A22-6884-3.
  71. ^ Huynh แจ็ค (2003) "การประมวลผล AMD Athlon XP ที่มี 512KB L2 แคช" (PDF) มหาวิทยาลัยอิลลินอยส์ Urbana-Champaign หน้า 6–11. ที่เก็บไว้จากเดิม(PDF)บน 2007/11/28 สืบค้นเมื่อ2007-10-06 .
  72. ^ Gottlieb, อัลลัน; อัลมาซี, จอร์จ เอส. (1989). การคำนวณแบบขนานสูง เรดวูดซิตี้ แคลิฟอร์เนีย: เบนจามิน/คัมมิงส์ ISBN 978-0-8053-0177-9.
  73. ฟลินน์ เอ็มเจ (กันยายน 2515) "องค์กรคอมพิวเตอร์บางแห่งและประสิทธิผล". IEEE ทรานส์ คอมพิวเตอร์. C-21 (9): 948–960. ดอย : 10.1109/TC.1972.5009071 . S2CID 18573685 .  
  74. ^ ลู, N.-P.; ชุง ซี.พี. (1998). "การเอารัดเอาเปรียบคู่ขนานในซูเปอร์สเกลาร์มัลติโพรเซสซิง". IEE ดำเนินการตามกฎหมาย - คอมพิวเตอร์และเทคนิคดิจิตอล สถาบันวิศวกรไฟฟ้า. 145 (4): 255. ดอย : 10.1049/ip-cdt:19981955 .
  75. ^ Anjum, Bushra; Perros, Harry G. (2015). "1: แบ่งพาร์ทิชัน End-to-End QoS งบประมาณโดเมน" การจัดสรรแบนด์วิดธ์สำหรับภายใต้คุณภาพของวิดีโอของข้อ จำกัด บริการ โฟกัสซีรีส์ จอห์น ไวลีย์ แอนด์ ซันส์. NS. 3. ISBN  9781848217461. สืบค้นเมื่อ 2016-09-21 . [...] ในการประมวลผลแบบคลาวด์โดยที่ส่วนประกอบซอฟต์แวร์หลายตัวทำงานในสภาพแวดล้อมเสมือนบนเบลดเดียวกัน หนึ่งองค์ประกอบต่อเครื่องเสมือน (VM) VM แต่ละรายการได้รับการจัดสรรหน่วยประมวลผลกลางเสมือน [...] ซึ่งเป็นส่วนหนึ่งของ CPU ของเบลด
  76. ^ ฟีฟิลด์ ทอม; เฟลมมิ่ง, ไดแอน; อ่อนโยน แอนน์; ฮอชสไตน์, ลอริน; พรูลซ์, โจนาธาน; Toews เอเวอเร็ตต์; ท็อปเจียน, โจ (2014). "อภิธานศัพท์" . คู่มือการดำเนินงาน OpenStack ปักกิ่ง: O'Reilly Media, Inc. p. 286. ISBN  9781491906309. สืบค้นเมื่อ 2016-09-20 . Virtual Central Processing Unit (vCPU)[:] แบ่งย่อยฟิสิคัลซีพียู อินสแตนซ์สามารถใช้ดิวิชั่นเหล่านั้นได้
  77. ^ "VMware Infrastructure สถาปัตยกรรมภาพรวมกระดาษสีขาว" (PDF) วีเอ็มแวร์ วีเอ็มแวร์ 2549.
  78. ^ "ความถี่ซีพียู" . CPU โลกคำศัพท์ ซีพียูเวิลด์ 25 มีนาคม 2551 . สืบค้นเมื่อ1 มกราคม 2010 .
  79. ^ "(a) โปรเซสเซอร์แบบมัลติคอร์คืออะไร" . ศูนย์ข้อมูลคำนิยาม SearchDataCenter.com . สืบค้นเมื่อ8 สิงหาคม 2559 .
  80. ^ "Quad Core กับ Dual Core" .
  81. ^ Tegtmeier มาร์ติน "การใช้งาน CPU ของสถาปัตยกรรมแบบมัลติเธรดอธิบาย" ออราเคิล. สืบค้นเมื่อ29 กันยายน 2558 .

ลิงค์ภายนอก