ทำไมไม่มีไมโครโปรเซสเซอร์ 256 บิตหรือ 512 บิต?


95

ในไมโครโปรเซสเซอร์ 8 บิตบัสข้อมูลประกอบด้วย 8 สายข้อมูล ในไมโครโปรเซสเซอร์ 16 บิตบัสข้อมูลนั้นประกอบด้วยสายข้อมูล 16 เส้นและอื่น ๆ

ทำไมถึงไม่มีไมโครโปรเซสเซอร์ 256 บิตหรือไมโครโปรเซสเซอร์ 512 บิต? ทำไมพวกเขาไม่เพียงเพิ่มจำนวนบรรทัดข้อมูลและสร้างไมโครโปรเซสเซอร์ 256 บิตหรือไมโครโปรเซสเซอร์ 512 บิต

อะไรคืออุปสรรคในการป้องกันการสร้างไมโครโปรเซสเซอร์ 256 บิตหรือไมโครโปรเซสเซอร์ 512 บิต


20
แม้แต่การตลาดก็ไม่สามารถเพิ่มจำนวนขึ้นเรื่อย ๆ ได้ตลอดไป
Olin Lathrop

82
ทำไมไม่มีใบมีดโกน 256 ใบ?
Rocketmagnet

11
@OlinLathrop ชำระเงินพลังGillete Fusionด้วย 5 ใบพัดและแบตเตอรี่!
เบรนแดนลอง

6
คำตอบนั้นใกล้เคียงกับคำถามนี้: เรามีรถยนต์ทรงกระบอก 1 & 2 & 3 & 4 & 5 & 6 & 8 & 12 & 16 ทำไมเราไม่มีรถถัง 32 & 64 & 128?
รัสเซลแม็คมาฮอน

13
@Russell: เพราะจะมีปัญหาการขาดแคลนกระบอกสูบทั่วโลก
Olin Lathrop

คำตอบ:


110

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

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

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

ฉันควรชัดเจนว่า ALU แบบกว้างไม่เพียง แต่ทำให้ ALU มีราคาแพงกว่า แต่ยังมีส่วนอื่น ๆ ของชิปด้วย ALU ที่มีความกว้าง 256 บิตหมายความว่าต้องมีพา ธ ข้อมูลกว้าง 256 บิต เพียงอย่างเดียวนั้นจะใช้พื้นที่ซิลิคอนจำนวนมาก ข้อมูลนั้นต้องมาจากที่ใดที่หนึ่งและไปที่ไหนสักแห่งดังนั้นจะต้องมีการลงทะเบียนแคชหน่วยความจำอื่น ๆ ฯลฯ เพื่อให้ ALU กว้างใช้งานได้อย่างมีประสิทธิภาพ

อีกจุดหนึ่งคือคุณสามารถคำนวณความกว้างของตัวประมวลผลความกว้างได้ คุณสามารถเพิ่มคำหน่วยความจำ 32 บิตลงในหน่วยความจำ 32 บิตอีกคำใน PIC 18 ใน 8 คำสั่งในขณะที่คุณสามารถทำได้ในสถาปัตยกรรมเดียวกันปรับขนาดเป็น 32 บิตใน 2 คำแนะนำเท่านั้น ประเด็นก็คือว่า ALU แคบ ๆ จะไม่ขัดขวางคุณจากการคำนวณแบบกว้างเพียงการคำนวณแบบกว้างจะใช้เวลานานขึ้น มันเป็นคำถามของความเร็วไม่ใช่ความสามารถ หากคุณดูสเปกตรัมของแอปพลิเคชันที่จำเป็นต้องใช้หมายเลขความกว้างเฉพาะคุณจะเห็นน้อยมากที่ต้องการคำ 256 บิต ค่าใช้จ่ายในการเร่งความเร็วของแอปพลิเคชั่นเพียงไม่กี่อย่างที่มีฮาร์ดแวร์ซึ่งจะไม่ช่วยคนอื่น ๆ นั้นไม่คุ้มค่าและไม่คุ้มค่ากับการลงทุนเพื่อพัฒนาผลิตภัณฑ์


9
ฉันเกลียดที่จะพูด แต่ฉันไม่เห็นด้วยที่นี่ ผมขอยกตัวอย่าง: การเรนเดอร์กราฟิกสำหรับวิดีโอเกม เป็นตลาดเล็ก ๆ ที่คุณอาจเคยได้ยินมูลค่า 10 พันล้านดอลลาร์
Rocketmagnet

39
@Rocket: ก่อนอื่น OP ถามเกี่ยวกับไมโครโปรเซสเซอร์ไม่ใช่โปรเซสเซอร์กราฟิก ประการที่สองการแสดงผลกราฟิกไม่จำเป็นต้องใช้คำกว้าง การดำเนินการขนาดเล็กจำนวนมากสามารถทำได้ในแบบคู่ขนาน แต่ฉันจะไม่เรียกคอร์ 8 คอร์ในแบบคู่ขนานแต่ละงานที่ใช้ข้อมูล 32 บิตเป็นตัวประมวลผล "256 บิต" คุณอ้างถึง quad core PC ของคุณเป็นโปรเซสเซอร์ "256 บิต" เพียงเพราะแต่ละคอร์สามารถทำงานกับข้อมูล 64 บิตได้หรือไม่? ฉันคิดว่านั่นเป็นคำที่ใช้ผิดวัตถุประสงค์และแม้แต่การตลาดของ Intel ก็ไม่ได้ทำให้หลายคอร์ปรากฏเช่นนั้น
Olin Lathrop

30
@Rocket: SIMD เป็นแบบคู่ขนานที่แตกต่างกัน แต่ฉันยังคงไม่เรียกมันว่า ALU แบบกว้างเพียงแค่กลุ่ม ALU ขนาดเล็กจำนวนมากที่ทำงานแบบขนานอย่างแน่นหนา คุณไม่สามารถเพิ่ม 256 บิตด้วยการพกพาทั้งหมดได้เช่นในโปรเซสเซอร์ SIMD ความเท่าเทียมไม่เหมือน ALU ที่กว้างกว่า คุณดูเหมือนจะออกไปในทางที่จะตรงกันข้าม บางทีคุณสามารถโต้แย้งถ้อยคำเกี่ยวกับสิ่งที่ขนานกันและกว้างกว่าได้ แต่การใช้คำจำกัดความที่ไม่เป็นทางการแล้วอ้างว่าการตีความอื่น ๆ นั้นผิดอย่างผิดเพี้ยนนั้นเป็นเพียงการมีส่วนร่วมในการประกวดพิศ
Olin Lathrop

15
@Rocket: เพียงเพราะ CPU สามารถทำงานได้ครั้งละ 256 บิตโดยการดำเนินการหลายอย่างพร้อมกันไม่ได้ทำให้มันเป็น "256 บิต" CPU นั่นแปลว่ามันสามารถใช้กับตัวเลขกว้าง 256 บิตได้โดยตรงซึ่งไม่สามารถทำได้ อย่างที่คุณพูดด้วยตัวเองไม่มีการพกพาระหว่างยูนิต ALU แบบขนานแยกต่างหากซึ่งทำให้มันไม่ใช่ 256 บิต ALU ดูเหมือนว่าคุณจะมีคำจำกัดความที่ผิดปกติเกี่ยวกับความหมายของ CPU ไม่ใช่จำนวนบิตที่สามารถดำเนินการได้ในคราวเดียว แต่ความกว้างของคำที่สามารถประมวลผลโดยรวมได้
Olin Lathrop

19
เมื่อฉันอยู่ในโรงเรียนเราได้รับการสอนว่าคนซอฟต์แวร์วัดความเป็นพยานในแง่ของความกว้างของชุดคำสั่ง "ตรรกะ" และคนฮาร์ดแวร์นั้นก็วัดความเป็นพยานในแง่ของความกว้างของบัส ดังนั้น 8088 จึงเป็นโปรเซสเซอร์ 16 บิตสำหรับผู้ใช้ซอฟต์แวร์และโปรเซสเซอร์ 8 บิตสำหรับผู้ใช้ฮาร์ดแวร์ 8086 นั้นเป็นแบบ 16 บิตสำหรับทุกคน แน่นอนว่านักการตลาดจะใช้จำนวนที่มากที่สุดที่พวกเขาหาได้ดังนั้นหวังว่าพวกเขาจะไม่อ่านกระทู้ความคิดเห็นนี้และเริ่มทำการตลาดซีพียู 512 บิต :-)
Mark Harrison

34

ฉันไม่รู้เกี่ยวกับ 256 หรือ 512 บิต แต่ฉันได้ยินเกี่ยวกับตัวประมวลผล 1024 บิต (ฉันไม่สามารถหาได้ในตอนนี้) เป็นคำที่VLIWสำหรับโปรแกรม Word การเรียนการสอนยาวมาก นั่นคือบัสการสอนไม่ใช่ความกว้างบัสข้อมูล ข้อดีคือคุณสามารถใช้Instruction Level Parallelism (ILP)ในขนาดใหญ่

การพบกันครั้งแรกของฉันกับ ILP ต้องใช้เวลา 20 ปีที่ผ่านมากับ Motorola DSP ซึ่งมีคำแนะนำสำหรับการทำ MAC (Multiply และ ACcumulate) ในขณะที่ย้ายข้อมูลไปยังและจากหน่วยความจำเพื่อให้คุณสามารถดำเนินการ MAC ใหม่ได้ เวลาระหว่างสอง MAC สำหรับการย้ายข้อมูล
วันนี้ยังมีตัวควบคุมวัตถุประสงค์ทั่วไปที่เสนอตัวเลือกนี้ VLIW ใช้สิ่งนี้ในระดับที่สูงขึ้นมาก

20

อ่านเพิ่มเติม
สถาปัตยกรรม VLIW


การคำนวณทางการเงินส่วนใหญ่ :( พบปัญหานี้ในขณะนี้
ฉันสับสนมากใน

ฉันคิดว่า x86 เป็นซีพียู VLIW ;-)
Macke

1
@MarcusLindblom เฉพาะเมื่อ VLIW คุณหมายถึงคำการเรียนการสอนความยาวผันแปรได้ ;-)
CVn

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

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

28

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

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


นั่นคือสถาปัตยกรรมที่น่าประทับใจ
Trygve Laugstøl

6
+1 สำหรับ "นักการตลาดที่มีเล่ห์เหลี่ยมที่ต้องการดัดคำที่ใช้เป็นประจำ"
Dan Neely

14

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

ตัวอย่างเช่น Motorola 68000 เป็นโปรเซสเซอร์ 32 บิต มีการลงทะเบียนข้อมูลแบบ 32 บิตและการลงทะเบียนที่อยู่แบบ 32 บิต ทีนี้รุ่นแรกของตระกูลสถาปัตยกรรมนั้นจะเปิดเผยที่อยู่เพียง 24 บิตเท่านั้น นอกจากนี้ตัวแปรมีอยู่ซึ่งมีบัสข้อมูล 8 บิตเท่านั้น (ดังนั้นการดำเนินการหน่วยความจำ 32 บิตจึงดำเนินการโดยตัวประมวลผลเป็นวงรอบการเข้าถึงหลายรอบ)

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

  1. จำนวนเต็ม: โปรแกรมได้รับไมล์สะสมจำนวนมากจากจำนวนเต็ม 32 และ 64 บิต หาก 64 บิตเป็นข้อ จำกัด การแก้ไขเพื่อให้มีจำนวนเต็ม bignum ที่นำไปใช้กับซอฟต์แวร์ ภาษาระดับสูงสามารถใช้ชนิดจำนวนเต็มเพื่อให้การดำเนินการเปลี่ยนไปมาระหว่าง "fixnums" และ "bignums" ได้อย่างราบรื่น แน่นอนว่าคุณใช้การแสดงที่มี bignums แต่คุณต้องพิจารณาว่าในภาพรวม: การดำเนินการในโปรแกรมมีการดำเนินการ bignum เป็นจำนวนเท่าใด หมายเลข 256 หรือ 512 บิตไม่ได้กำจัดความต้องการบิกนัมพวกเขาเพียงเพิ่มเฮดรูมก่อนที่เราจะต้องเปลี่ยนไปใช้บิกคุม หากคุณต้องการจัดการกับกุญแจสาธารณะ 2048 บิตจำนวนเต็ม 512 บิตจะไม่ทำ (แต่บิตนิกที่มีตัวเลข 512 บิตอาจเร็ว)

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

  3. ประเภททศนิยม: บิตเพิ่มเติมในจำนวนจุดลอยตัวหมายถึงความแม่นยำมากขึ้น ฉันจะบอกว่าประเภทจุดลอยตัวได้รับประโยชน์มากที่สุดจากการเป็นตัวแทนที่กว้างขึ้น ประเภทลอย 256 หรือ 512 บิตจะปรับปรุงเสถียรภาพของรหัสตัวเลขและคุณภาพของการคำนวณทางวิทยาศาสตร์ที่ต้องใช้การวนซ้ำจำนวนมากและสะสมข้อผิดพลาดไปพร้อมกัน ความแม่นยำใน floating-point ไม่เหมือนกับความแม่นยำในจำนวนเต็ม: เราไม่สามารถแยกประเภทของ floating point เป็นช่วงเช่น fixnums กับ bignums ความแม่นยำมากขึ้นในจุดลอยตัวจะส่งผลต่อคุณภาพของตัวเลขที่ไม่แน่นอนทั้งหมดไม่ว่าจะใกล้เคียงศูนย์หรือมีขนาดใหญ่ บิตจำนวนมากในเลขชี้กำลังจุดลอยตัวยังสามารถขยายช่วงของจำนวนจุดลอยตัวได้อย่างมากมายและเร็วกว่าการเพิ่มบิตลงในจำนวนเต็มบิกคัม

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

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

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


คำอธิบายที่ดี อย่างไรก็ตามโปรเซสเซอร์ x86 ทั่วไปมีจุดลอยตัว 80 บิตเป็นเวลานานเนื่องจากอุปกรณ์จุดลอยตัวฮาร์ดแวร์ตัวแรกสำหรับพวกเขาถ้าฉันจำได้ถูกต้อง 80 บิตอยู่ภายใน FPU จากนั้นโดยทั่วไปแล้ว 32 หรือ 64 บิตจะถูกส่งออก
Olin Lathrop

ในทางเทคนิคแล้วเสร็จแล้ว Google "nan boxing" หรือ "nun Boxing" สิ่งที่น่าหวังยิ่งกว่าคือแท็กประเภทฮาร์ดแวร์ใน ARM 64 บิต แต่ไม่น่าเสียดายที่ในไม่ช้า
whitequark

3
มันเป็นไปได้ที่จะเข้าถึงรุ่น 80 โดยตรง ย้อนกลับไปในยุค 90 เมื่อฉันเรียนรู้ที่จะเขียนโปรแกรมใน TurboPascal มีประเภทแบบลอย 80 บิต
Dan Neely

@DanNeely: บางครั้งฉันคิดว่าตัวประมวลผลจะได้ประโยชน์จากพิกัดจุดลอยตัว 3 มิติโดยรวมตัวเลข 80 บิตสามตัวเป็น 256 บิตแบบบิตหรือตัวเลข 42 บิตสามตัวเป็นก้อนแบบ 128 บิตหรือสามตัว ตัวเลข 21 บิตให้เป็น 64 บิต ฉันสงสัยว่าสิ่งเหล่านี้จะนำไปปฏิบัติได้ยากเพียงใดและมันมีประโยชน์อย่างไร
supercat

@supercat GPGU Wikipedia: การทำงานส่วนใหญ่ใน [NVidia] GPU ทำงานในแบบเวกเตอร์: การดำเนินการหนึ่งสามารถดำเนินการได้สูงสุดสี่ค่าในครั้งเดียว ตัวอย่างเช่นหากสีใด <R1, G1, B1> จะถูกมอดูเลตด้วยสีอื่น <R2, G2, B2> GPU จะสามารถสร้างสีผลลัพธ์ <R1 * R2, G1 * G2, B1 * B2> ในสีเดียว การทำงาน
Kaz

9

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

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

  • 4 บิต: เพียงพอสำหรับตัวเลขดังนั้นจึงเหมาะสำหรับเครื่องคิดเลข (สไตล์ BCD) เครื่องบันทึกเงินสด ฯลฯ (ซึ่งเป็นพื้นที่ จำกัด )
  • 8 bits: เพียงพอสำหรับตัวอักษร (ASCII), เหมาะสำหรับระบบประมวลผลข้อความ (ซึ่งเป็นบริเวณกว้างมาก) สำหรับเสียงคุณภาพต่ำ
  • 16 บิต: เมื่อ 16- บิตเป็นที่นิยมที่อยู่หน่วยความจำ 2 ^ 16 เป็นจำนวนที่สมเหตุสมผล (อย่างน้อยก็มีเหตุผลมากกว่า 2 ^ 8 หรือ 2 ^ 32) 16 บิตให้คุณภาพเสียงที่ยอมรับได้และตัวแปลง A / D ส่วนใหญ่ให้ผลลัพธ์น้อยกว่า 16 บิตดังนั้นการคำนวณด้วยค่าดังกล่าวใน 16 บิตจึงสมเหตุสมผล
  • 32 บิต: 32 บิตเหมาะกับความแม่นยำของปริมาณที่มนุษย์วัดได้ส่วนใหญ่ (แต่ไม่ใช่ทั้งหมด) และเว้นแต่ว่าคุณกำลังติดต่อกับฐานข้อมูลขนาดใหญ่ 2 ^ 32 ที่อยู่นั้นเพียงพอสำหรับการใช้งานจริงมากที่สุด
  • 64 บิต: ขณะนี้มีหน่วยความจำ> 2 ^ 32 ไบต์
  • 128 บิต: ในขณะนี้มีความได้เปรียบเพียงเล็กน้อยมากกว่า 32 ยกเว้นในการเข้ารหัส เมื่อใดที่เราคาดหวังมากกว่า 2 ^ 64 ไบต์บนฮาร์ดดิสก์ อาจจะไม่เร็ว

1
“ 640K น่าจะเพียงพอสำหรับทุกคน” -Bill Gates (1981)
jippie

6
@ jippie - Gates ไม่เคยพูดอย่างนั้นจริง ๆ
Rocketmagnet

1
ที่จริงแล้วซีพียู 8 บิตส่วนใหญ่สามารถระบุหน่วยความจำ 2 ^ 16 ไบต์และ 16 บิตเตอร์ 2 ^ 32, 80386 (32 บิต) ในทางทฤษฎีก็สามารถระบุที่อยู่ 2 ^ 64 ไบต์ (4GB) ของหน่วยความจำซึ่งจะค่อนข้างไร้ประโยชน์ ในสมัยนั้น ...
Axel

1
20

3
@Michael - ทุกครั้งและฉันได้เห็นมันตลอดอาชีพของฉัน: มีผู้จัดการผลิตภัณฑ์ที่มีวิสัยทัศน์น้อยมาก เรื่องเล็ก ๆ น้อย ๆ : ต้นปี 1970 ที่บรรยายโดย Robert Noyce เกี่ยวกับอนาคตของไมโครโปรเซสเซอร์ที่เขาคาดการณ์การย่อขนาดปัจจุบันและบางคนในกลุ่มผู้ชมพูดว่า: "Damn, ฉันไม่อยากเสียคอมพิวเตอร์ทั้งหมดในซอกแซกในพื้น" ตามที่ Noyce ตอบดูถูกเหยียดหยาม: "คุณไม่เข้าใจเลยคุณไม่สนหรอกว่าคนที่คุณสูญเสียไป; คุณจะมีคนอื่นนับพัน" นั่นคือต้นปี 1970 Robert Noyce เป็นผู้มีวิสัยทัศน์
stevenvh

9

ที่จริงแล้วโปรเซสเซอร์ดังกล่าวมีอยู่จริงและเป็นเรื่องปกติทั้งนี้ขึ้นอยู่กับวิธีที่คุณกำหนดพยานบุคคล ตอนนี้คุณเกือบจะใช้แล้ว ตามที่แลงอธิบายว่าไม่มีการใช้งานจำนวนมากสำหรับหมายเลข 256 บิต แต่จำนวนประมาณ 4 x 32 บิตเป็นอย่างไร จะเกิดอะไรขึ้นถ้า ALU สามารถเพิ่มหมายเลข 32- บิตได้ 4 คู่ในเวลาเดียวกัน ALUs ดังกล่าว (ที่ฉันรู้จัก) ถูกนำมาใช้ครั้งแรกในซูเปอร์คอมพิวเตอร์เวกเตอร์ในปี 1970 ครั้งแรกที่ฉันเป็นเจ้าของคอมพิวเตอร์ดังกล่าวคือเมื่อฉันมีหนึ่งใน Intel Pentiums ที่มี MMX

Intel MMX guy

จำพวกนั้นได้มั้ย

ชิป MMX มีชุดคำสั่งเดี่ยว - ชุดคำสั่งข้อมูลหลายชุด ( SIMD ) ช่วยให้คุณเพิ่มคู่ 1 × 64 บิต, 2 × 32- บิตคู่, 4 × 16 บิตหรือ 8 × 8 บิต

แต่นั่นไม่ใช่อะไร การ์ดกราฟิกที่ทันสมัยมี GPU (ซึ่งใช้แทนหน่วยประมวลผลกราฟิก แต่ตอนนี้ย่อมาจากหน่วยประมวลผลทั่วไป) เหล่านี้มักจะใช้งาน SIMD ที่กว้างความสามารถของสาขาโหลดและจัดเก็บใน 128 หรือ 256 บิตในแต่ละครั้ง microarchitecture ต้นแบบของ Intel รวมถึง SIMD 512-bit มากกว่าสองตัวที่ลงทะเบียนไว้ในแต่ละคอร์

GPU SIMD

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


1
"คู่ 1 × 16 บิต, 2 × 32- บิตคู่, 4 × 16- บิตหรือ 8 × 8 บิตคู่" คุณแน่ใจหรือไม่ว่าคุณมีส่วนนั้นอยู่ใช่ไหม?
CVn

4
จากภาพรวมครั้งแรกที่ดูเหมือนว่าเป็นซิงเกิลคราฟท์ที่มีโลโก้ของ Intel
Chris Laplante

4
ตัวแปร 4x32 บิตยังคงเป็น32 บิตเท่านั้น บิต-Ness เป็นสูงสุดแต่ละจำนวนเต็ม ALU สามารถทำงานบน การทำแบบขนานหลายครั้งจะไม่เพิ่มความกว้างบิต -1
คอนเนอร์ Wolf

3

เพราะเรายังไม่ต้องการมัน

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


3

"ทำไมพวกเขาไม่เพียงเพิ่มจำนวนบรรทัดข้อมูลและสร้าง 256 บิต"

โปรเซสเซอร์ของ Intel ทั้งหมดที่เหมาะสมกับซ็อกเก็ต LGA-2011 นั้นมี 256 ขาข้อมูลเชื่อมต่อกับ 256 สายข้อมูลบนเมนบอร์ดที่นำไปสู่ ​​DRAM ฉันจะแปลกใจเล็กน้อยถ้าแล็ปท็อปหรือเครื่องเดสก์ท็อปล่าสุดที่คุณใช้ไม่ได้สายข้อมูลอย่างน้อย 256 เส้น ฉันขอถามได้ไหมว่าคุณมีความคิดที่ผิดที่พวกเขา "ไม่ ... เพียงเพิ่มจำนวนบรรทัดข้อมูล"

LGA 2011 ซ็อกเก็ตแผ่นข้อมูลส่วน 6.1 แสดงให้เห็นว่าซีพียูเหล่านี้มี 256 หมุดข้อมูลและ 76 ขาที่อยู่ (ที่อยู่ธนาคาร + ที่อยู่หน่วยความจำ)


-1

เพราะไม่มีแอพพลิเคชั่นที่ต้องการหรือมีความเป็นไปได้ในการแสดงข้อมูลโดยใช้มากกว่า 128 บิตพร้อมกัน

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


-4

ระบบคอมพิวเตอร์หมายถึงเครื่องคอมพิวเตอร์ซึ่งต้องใช้อินพุตบางตัวและให้สัญญาณออกบางส่วน เราต้องสร้างความพึงพอใจให้กับคอมพิวเตอร์ในบรรทัดเหล่านี้ดังนั้นผู้พัฒนาจึงมีเกณฑ์มาตรฐานโดยมี 3 บัส ได้แก่ แอดเดรสบัสบัสข้อมูลและบัสควบคุม 1) Address Bus ดึงข้อมูล / เลือกที่อยู่เฉพาะในหน่วยความจำสำหรับการดำเนินการอ่าน / เขียน 2) Data Bus จะดึงข้อมูลนำเสนอข้อมูลนี้ไปยัง / จากโปรเซสเซอร์และหน่วยความจำสำหรับการประมวลผล / การเก็บข้อมูล 3) Control Bus สร้างโปรโตคอลควบคุมอินเตอร์เฟสและขอให้ระบบเคารพ

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

ตั้งแต่เริ่มต้นเนื่องจากสาเหตุหลายประการเช่นความซับซ้อน H / W, ต้นทุน, ความต้องการ, อัลกอริธึมที่มีประสิทธิภาพและเหตุผลหลักขอบเขตตลาดเป็นอุปสรรคหลักสำหรับการผลิตความกว้างของบัสข้อมูลสูงดังที่โฮสต์คำถามกล่าวถึง 256 บิตหรือ 512 บิต สิ่งเหล่านี้เป็นไปได้! แต่ความต้องการยังไม่ปรากฏในปัจจุบันขอบเขตของตลาดยังไม่สามารถมองเห็นได้ด้วยความต้องการในปัจจุบันและการขาดการสนับสนุนด้านซอฟต์แวร์

ตัวประมวลผล 256 บิตหมายถึงความกว้างของ Data Bus ที่ตัวประมวลผลเฉพาะสามารถจัดการได้หรือ ALU สามารถประมวลผลในการประมวลผลครั้งเดียว เราเริ่มจาก 4 บิตจากนั้น 8,16,32 และปัจจุบัน 64 และแม้กระทั่ง 128 บิตซึ่งเป็นผลิตภัณฑ์ขอบเขตตลาดปัจจุบัน

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


6
การใช้คำนามเป็นตัวพิมพ์ทำให้อ่านยาก
pjc50

อืมใช่ฉันต้องเริ่มทำอย่างนั้น
ศรีกฤษณะ

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