ทำไมทรานซิสเตอร์มากกว่า = กำลังการประมวลผลมากขึ้น?


43

ตามวิกิพีเดียพลังการประมวลผลเชื่อมโยงอย่างยิ่งกับกฎของมัวร์:

http://en.wikipedia.org/wiki/Moore's_law

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

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


10
ทรานซิสเตอร์มากขึ้น = ความเท่าเทียมมากขึ้น
Toby Jaffey

2
เป็นเรื่องจริงไม่ว่าหน่วยประมวลผลจะมีจำนวนคอร์เท่าใด
โทมัส O

1
ใช่. ทรานซิสเตอร์มากขึ้นหมายความว่าคุณสามารถใส่ยูนิตการทำงานแบบขนานได้มากขึ้น แคชใหญ่ขึ้น ท่อลึก
Kaz

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

2
คิดแค่ทวีคูณ ด้วยทรานซิสเตอร์ที่เพียงพอคุณสามารถใช้ตารางการค้นหาแบบเต็มและทำการคูณทั้งหมดในขั้นตอนเดียว ด้วยทรานซิสเตอร์ที่น้อยลงคุณต้องทำสิ่งต่าง ๆ เช่นการเติมซ้ำ
David Schwartz

คำตอบ:


29

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

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


19

คำสั่งแรกไม่จำเป็นต้อง "ดำเนินการตามลำดับ" แม้ใน ISA ที่ไม่ใช่ VLIW การดำเนินการจะต้องปรากฏตามลำดับเท่านั้น การดำเนินการตามลำดับ superscalar สามารถดำเนินการมากกว่าหนึ่งคำสั่งพร้อมกัน ในการทำเช่นนี้ได้อย่างมีประสิทธิภาพฮาร์ดแวร์สำหรับการถอดรหัสคำสั่งจะต้องเพิ่มขึ้น (กว้างขึ้น) ต้องเพิ่มฮาร์ดแวร์เพื่อให้แน่ใจว่าข้อมูลที่เป็นอิสระของคำแนะนำในการดำเนินการแบบขนานทรัพยากรการดำเนินการจะต้องเพิ่มขึ้นและจำนวนพอร์ตไฟล์ลงทะเบียน ทั้งหมดนี้เป็นการเพิ่มทรานซิสเตอร์

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

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

การวางท่อเพิ่มการควบคุมเพิ่มเติมและค่าใช้จ่ายในการบัฟเฟอร์และป้องกันการใช้ซ้ำของตรรกะสำหรับส่วนต่าง ๆ ของการจัดการคำสั่ง แต่อนุญาตให้ส่วนต่าง ๆ ของการจัดการคำสั่งซ้อนทับในเวลาสำหรับคำแนะนำที่แตกต่างกัน

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

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

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

การใช้งานฟังก์ชั่นในฮาร์ดแวร์มากกว่าซอฟต์แวร์สามารถเพิ่มประสิทธิภาพ (ในขณะที่ต้องการทรานซิสเตอร์เพิ่มเติม) เช่นการจัดการ TLB การดำเนินการที่ซับซ้อนเช่นการคูณหรือการดำเนินการจุดลอยการดำเนินงานเฉพาะเช่นศูนย์นำหน้าการนับ (การเพิ่มคำสั่งยังช่วยเพิ่มความซับซ้อนของการถอดรหัสคำสั่งและโดยทั่วไปแล้วความซับซ้อนของการดำเนินการเช่น - เพื่อควบคุมว่าส่วนใดของฮาร์ดแวร์การเรียกใช้จะใช้)

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

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

การมีทรานซิสเตอร์เพิ่มมากขึ้นสามารถทำให้สถาปนิกคอมพิวเตอร์สามารถจัดเตรียมซอฟต์แวร์ที่ลงทะเบียนไว้กับ ISA ได้ซึ่งอาจลดความถี่ของการเข้าถึงหน่วยความจำซึ่งมีแนวโน้มที่จะช้ากว่าการลงทะเบียนการเข้าถึงและเกี่ยวข้องกับการอ้อมในระดับหนึ่ง ตัวชี้) ซึ่งเพิ่มเวลาแฝง

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

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

ข้างต้นอาจจะเหนื่อย แต่ก็ไม่ครบถ้วน!


2
คำตอบที่ยอดเยี่ยมจากคนใหม่!
Connor Wolf

12

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


2
Alan Kay คำนวณว่าตั้งแต่เขาทำงานกับ Smalltalk ใน Xerox PARC เราได้สูญเสียทรานซิสเตอร์เป็นสองปีเป็นสองเท่าเนื่องจากสถาปัตยกรรมที่ผิดและไม่มีประสิทธิภาพของซอฟต์แวร์เพราะคอมพิวเตอร์ไม่เร็วเท่าที่ทรานซิสเตอร์จะแนะนำเป็นสองเท่า
jpc

5

อีกปัจจัยหนึ่ง: เมื่อคุณยัดทรานซิสเตอร์มากขึ้นในพื้นที่ที่กำหนดมันจะเล็กลงทำให้เร็วขึ้น


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

4

ไมโครโปรเซสเซอร์มีความก้าวหน้าอย่างมีนัยสำคัญในช่วงไม่กี่ปีที่ผ่านมาสิ่งต่าง ๆ เช่นท่อที่ยาวกว่าการแยกสาขาและภาคบนชิปแคชได้เพิ่มความซับซ้อนที่เกี่ยวข้องกับโปรเซสเซอร์

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

หน่วยความจำแคชเร็วกว่า RAM มาก แต่สิ่งที่จะย้ายจาก RAM ไปยังแคชและจากแคชกลับไปที่ RAM ??? นั่นคือสิ่งที่เป็นกรรมสิทธิ์อีกครั้ง แต่มันต้องใช้ทรานซิสเตอร์อีกครั้ง

ดังนั้นทรานซิสเตอร์พิเศษจึงเข้าสู่สิ่งต่าง ๆ เช่นไปป์ไลน์ที่ยาวขึ้นอัลกอริธึมของสาขาที่คาดการณ์ได้หน่วยความจำแคชและอัลกอริธึมหน่วยความจำ

สิ่งนี้ไม่ได้กล่าวถึงตัวประมวลผลแบบมัลติคอร์และตัวควบคุมการเข้าถึงหน่วยความจำ / ทรัพยากรที่ใช้ร่วมกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.