กลับไปหน้าบทความ

อ่าน 7 นาที

อินเทล 8087

Intel 8087 ซึ่งประกาศในปี 1980 เป็น โคโปรเซสเซอร์ จุดลอยตัว ตัวแรก สำหรับตระกูลไมโครโปรเซสเซอร์ 8086 [ 4 ] [ 5 ] [ 6 ] วัตถุประสงค์ของชิปนี้คือเพื่อเร่งความเร็ว การดำเนินการ...

อินเทล 8087

อินเทล 8087
ข้อมูลทั่วไป
เปิดตัว1980 ( 1980 )
ทำการตลาดโดยอินเทล , ไอบีเอ็ม[ 1 ]
ออกแบบโดยอินเทล
ผู้ผลิตทั่วไป
ผลงาน
ความเร็วสัญญาณนาฬิกาCPU สูงสุด4 เมกะเฮิร์ตซ์ ถึง 10 เมกะเฮิร์ตซ์
ข้อกำหนดทางกายภาพ
ทรานซิสเตอร์
  • 65000
บรรจุุภัณฑ์
สถาปัตยกรรมและการจำแนกประเภท
โหนดเทคโนโลยี4.5->3 ไมโครเมตร
ชุดคำสั่งx87 ( ส่วนขยาย โคโปรเซสเซอร์ของx86-16 )
ประวัติศาสตร์
ผู้มาก่อน8231/8232
ผู้สืบทอด80287

Intel 8087ซึ่งประกาศในปี 1980 เป็นโคโปรเซสเซอร์จุดลอยตัว ตัวแรก สำหรับตระกูลไมโครโปรเซสเซอร์8086 [ 4 ] [ 5 ] [ 6 ]วัตถุประสงค์ของชิปนี้คือเพื่อเร่งความเร็ว การดำเนินการ ทางคณิตศาสตร์จุดลอยตัวเช่นการบวกการลบการ คูณ การหารและรากที่สองนอกจากนี้ยังคำนวณฟังก์ชันอดิศัยเช่นการ คำนวณ เลขชี้กำลังลอการิทึมหรือตรีโกณมิติ การเพิ่มประสิทธิภาพ มีตั้งแต่ประมาณ 20% ถึงมากกว่า 500% ขึ้นอยู่กับแอปพลิเคชันเฉพาะ 8087 สามารถทำงานได้ประมาณ 50,000  FLOPS [ 5 ]โดยใช้พลังงานประมาณ 2.4 วัตต์[ 6 ]

ชิป Intel 8087

8087 เป็นวงจรรวมขั้นสูงที่ผลักดันขีดจำกัดของเทคโนโลยีการผลิตในยุคนั้น การดำเนินการพื้นฐานบน 8087 เช่น การบวกและการลบอาจใช้เวลามากกว่า 100 รอบการทำงานของเครื่อง และคำสั่งบางอย่างใช้เวลามากกว่า 1000 รอบการทำงาน[ 7 ]ชิปนี้ไม่มีตัวคูณฮาร์ดแวร์และใช้การคำนวณโดยใช้อัลกอริทึมCORDIC [ 8 ]

ยอดขายของ 8087 เพิ่มขึ้นอย่างมากเมื่อมีการเพิ่มซ็อกเก็ตโคโปรเซสเซอร์ลงใน เมนบอร์ด IBM PC ปี 1981 การพัฒนา 8087 นำไปสู่ มาตรฐาน IEEE 754-1985สำหรับการคำนวณเลขจุดลอยตัว ความเร็วที่มีให้เลือกคือ 4.77 (5), 8 และ 10 MHz [ 9 ] ต่อมามี โคโปรเซสเซอร์ x87สำหรับโปรเซสเซอร์80186 , 80286 , 80386 , 80386SXและ80486SXเริ่มต้นด้วย80486DX โปรเซสเซอร์ Intel x86มีโคโปรเซสเซอร์เลขจุดลอยตัวแบบรวม ฟังก์ชันเลขจุดลอยตัวถูกรวมเข้ากับโปรเซสเซอร์ โปรเซสเซอร์ Intel 486SX มีหน่วยประมวลผลเลขจุดลอยตัวที่ถูกปิดใช้งานหรือไม่มีอยู่ แต่มี 80487 แยกต่างหาก ซึ่งในความเป็นจริงแล้วก็คือ 486DX ที่มีพินพิเศษทำให้สามารถปิดใช้งาน CPU ที่มีอยู่ได้

ตัวแปร

หมายเลขรุ่น[ 10 ]ความถี่ชื่อรุ่นราคา[รายการที่ 1 ]
80875 เมกะเฮิร์ตซ์กล่อง 8087142 ดอลลาร์สหรัฐ
8087-28 เมกะเฮิรตซ์กล่อง 8087-2205 ดอลลาร์สหรัฐ
8087-110 เมกะเฮิร์ตซ์กล่อง 8087-1270 ดอลลาร์สหรัฐ
  1. ^ราคาต่อหน่วยที่แนะนำ

การออกแบบและการพัฒนา

ก่อนหน้านี้ Intel ได้ผลิตหน่วยประมวลผลเลขคณิต8231 และหน่วยประมวลผลจุดลอยตัว8232ซึ่งออกแบบมาเพื่อใช้กับ โปรเซสเซอร์ 8080หรือโปรเซสเซอร์ที่คล้ายกัน และใช้บัสข้อมูล 8 บิต โดยเชื่อมต่อกับระบบโฮสต์ผ่านทาง I/O ที่ตั้งโปรแกรมไว้หรือตัวควบคุมDMA [ 11 ]

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

ในปี 1977 Pohlman ได้รับอนุญาตให้ออกแบบชิปคณิตศาสตร์ 8087 โดย Bruce Ravenel ได้รับมอบหมายให้เป็นสถาปนิก และ John Palmer ได้รับการว่าจ้างให้เป็นสถาปนิกร่วมและนักคณิตศาสตร์สำหรับโครงการนี้ ทั้งสองได้คิดค้นการออกแบบที่ปฏิวัติวงการด้วยแมนทิสซา 64 บิตและเลขชี้กำลัง 16 บิตสำหรับจำนวนจริงรูปแบบที่ยาวที่สุด พร้อมด้วย CPU สถาปัตยกรรมสแต็กและรีจิสเตอร์สแต็ก 80 บิตแปดตัว พร้อมด้วยชุดคำสั่งที่มีความสามารถในการคำนวณสูง[ 12 ] การออกแบบนี้ได้แก้ปัญหาสำคัญบางประการที่ทราบกันดีในการคำนวณเชิงตัวเลขและซอฟต์แวร์เชิงตัวเลข ได้แก่ ปัญหาข้อผิดพลาดในการปัดเศษสำหรับตัวดำเนินการ 64 บิต และการแปลงโหมดตัวเลขสำหรับตัวเลข 64 บิตทั้งหมด Palmer ยกย่องงานเขียนของWilliam Kahan เกี่ยวกับจุดลอยตัวว่าเป็นอิทธิพลสำคัญในการออกแบบของพวกเขา [ 13 ] [ 14 ]

การออกแบบ 8087 ในช่วงแรกได้รับการตอบรับที่ไม่ค่อยดีนักในซานตาคลาราเนื่องจากการออกแบบที่ก้าวร้าว ในที่สุด การออกแบบนี้ถูกมอบหมายให้ Intel Israel และ Rafi Nave ได้รับมอบหมายให้เป็นผู้นำในการพัฒนาชิป Palmer, Ravenel และ Nave ได้รับสิทธิบัตรสำหรับการออกแบบนี้[ 15 ] Robert Koehler และ John Bayliss ยังได้รับสิทธิบัตรสำหรับเทคนิคที่คำสั่งบางคำสั่งที่มีรูปแบบบิตเฉพาะถูกถ่ายโอนไปยังโคโปรเซสเซอร์[ 16 ]

8087 มีทรานซิสเตอร์ 65,000 ตัว และผลิตเป็น วงจร HMOS แบบ depletion-load ขนาด 4.5 μm (ต่อมาลดขนาดเหลือ 3 μm) เพื่อลดขนาดของชิปซิลิคอน ไมโครโค้ดของโคโปรเซสเซอร์ถูกนำไปใช้ในROM แบบหลายระดับโดยแต่ละตำแหน่งจะเก็บข้อมูล 2 บิตโดยใช้กระแสไฟฟ้า 1 ใน 4 กระแสที่เป็นไปได้[ 17 ]อุปกรณ์นี้ทำงานร่วมกับ 8086 หรือ 8088 และแนะนำคำสั่ง ใหม่ประมาณ 60 คำ สั่ง คำสั่งแอสเซมบลีส่วนใหญ่ของ 8087 ขึ้นต้นด้วยFเช่นFADD, FMUL, FCOMและอื่นๆ ทำให้สามารถแยกแยะได้ง่ายจากคำสั่ง 8086 การเข้ารหัสไบนารีสำหรับคำสั่ง 8087 ทั้งหมดขึ้นต้นด้วยรูปแบบบิต 11011 เลขฐานสิบ 27 เหมือนกับอักขระASCII ESCแม้ว่าจะอยู่ในบิตลำดับสูงกว่าของไบต์ก็ตามคำนำหน้าคำสั่ง ที่คล้ายกันนี้ บางครั้งก็เรียกว่า " รหัสหลบหนี " ตัวย่อคำสั่งที่ Intel กำหนดสำหรับคำสั่งโคโปรเซสเซอร์เหล่านี้คือESC. โปรเซสเซอร์ 8087 มีราคาแพงและผลิตยาก มีอัตราผลผลิตต่ำ นอกจากนี้ยังร้อนมาก ทำให้ Intel ต้องใช้แพ็คเกจเซรามิกที่มีราคาแพงกว่าเพื่อการระบายความร้อนที่ดีขึ้น

เมื่อซีพียู 8086 หรือ 8088 ประมวลผลESCคำสั่ง หากไบต์ที่สอง (ไบต์ ModR/M) ระบุตัวถูกดำเนินการในหน่วยความจำ ซีพียูจะประมวลผลรอบการทำงานของบัสเพื่ออ่านข้อมูลหนึ่งเวิร์ดจากตำแหน่งหน่วยความจำที่ระบุในคำสั่ง (โดยใช้โหมดการกำหนดแอดเดรสใดๆ ของ 8086) แต่จะไม่เก็บค่าที่อ่านได้ลงในรีจิสเตอร์ของซีพียูหรือดำเนินการใดๆ กับค่าดังกล่าว โปรเซสเซอร์ร่วม 8087 จะสังเกตบัสและถอดรหัสกระแสคำสั่งให้ทำงานประสานกับ 8086 โดยจะจดจำคำสั่งของโปรเซสเซอร์ร่วมที่มุ่งไปยังตัวมันเอง สำหรับคำสั่ง 8087 ที่มีตัวถูกดำเนินการในหน่วยความจำ หากคำสั่งนั้นต้องการให้อ่านตัวถูกดำเนินการ โปรเซสเซอร์ร่วม 8087 จะรับข้อมูลเวิร์ดที่อ่านได้จากซีพียูหลักจากบัสข้อมูล หากตัวถูกดำเนินการที่จะอ่านมีความยาวมากกว่าหนึ่งเวิร์ด โปรเซสเซอร์ร่วม 8087 จะคัดลอกแอดเดรสจากบัสแอดเดรสด้วย จากนั้น หลังจากเสร็จสิ้นรอบการอ่านข้อมูลที่ขับเคลื่อนโดย CPU แล้ว 8087 จะใช้ DMA ทันทีเพื่อควบคุมบัสและถ่ายโอนไบต์เพิ่มเติมของตัวถูกดำเนินการเอง หากคำสั่ง 8087 ที่มีตัวถูกดำเนินการในหน่วยความจำต้องการให้เขียนตัวถูกดำเนินการนั้น 8087 จะละเว้นคำที่อ่านได้บนบัสข้อมูลและคัดลอกที่อยู่ จากนั้นร้องขอ DMA และเขียนตัวถูกดำเนินการทั้งหมดในลักษณะเดียวกับที่มันจะอ่านส่วนท้ายของตัวถูกดำเนินการแบบขยาย ในลักษณะนี้ CPU หลักจะรักษาการควบคุมบัสและจังหวะเวลาของบัสโดยทั่วไป ในขณะที่ 8087 จัดการด้านอื่นๆ ทั้งหมดของการดำเนินการคำสั่งโคโปรเซสเซอร์ ยกเว้นช่วงเวลา DMA สั้นๆ เมื่อ 8087 จะเข้าควบคุมบัสเพื่ออ่านหรือเขียนตัวถูกดำเนินการไปยัง/จากรีจิสเตอร์ภายในของตัวเอง ด้วยเหตุนี้ 8087 จึงสามารถประมวลผลได้เฉพาะตัวถูกดำเนินการที่ดึงมาจากหน่วยความจำหรือจากรีจิสเตอร์ของตัวเองเท่านั้น และการแลกเปลี่ยนข้อมูลใดๆ ระหว่าง 8087 กับ 8086 หรือ 8088 จะทำผ่าน RAM เท่านั้น

โปรแกรมหลักของ CPU ยังคงทำงานต่อไปในขณะที่ 8087 ประมวลผลคำสั่ง จากมุมมองของ CPU หลัก 8086 หรือ 8088 คำสั่งของโคโปรเซสเซอร์ใช้เวลาเพียงเท่ากับเวลาประมวลผลของโอเปอเรเตอร์โค้ดและรอบการทำงานของหน่วยความจำ (2 รอบสัญญาณนาฬิกาสำหรับไม่มีโอเปอเรเตอร์ 8 รอบสัญญาณนาฬิกาบวก เวลาคำนวณ EA [5 ถึง 12 รอบสัญญาณนาฬิกา] สำหรับโอเปอเรเตอร์ในหน่วยความจำ [บวกอีก 4 รอบสัญญาณนาฬิกาบน 8088] เพื่อถ่ายโอนไบต์ที่สองของคำโอเปอเรเตอร์) หลังจากนั้น CPU จะเริ่มประมวลผลคำสั่งถัดไปของโปรแกรม ดังนั้น ระบบที่มี 8087 จึงสามารถประมวลผลแบบขนานได้อย่างแท้จริง โดยทำการคำนวณหนึ่งในหน่วยคำนวณเลขคณิตจำนวนเต็มของ CPU หลัก ในขณะเดียวกันก็ทำการคำนวณเลขทศนิยมในโคโปรเซสเซอร์ 8087 ไปพร้อมกัน เนื่องจาก 8086 หรือ 8088 ควบคุมการไหลของคำสั่งและจังหวะเวลาแต่เพียงผู้เดียว และไม่มีสิทธิ์เข้าถึงสถานะภายในของ 8087 โดยตรง และเนื่องจาก 8087 สามารถประมวลผลคำสั่งได้ครั้งละหนึ่งคำสั่งเท่านั้น โปรแกรมสำหรับระบบ 8086/8087 หรือ 8088/8087 ที่รวมกันจึงต้องตรวจสอบให้แน่ใจว่า 8087 มีเวลาเพียงพอที่จะประมวลผลคำสั่งสุดท้ายที่ได้รับก่อนที่จะได้รับคำสั่งถัดไปWAITคำสั่ง (ของ CPU หลัก) ถูกจัดเตรียมไว้เพื่อจุดประสงค์นี้ และแอสเซมเบลอร์ส่วนใหญ่จะยืนยันWAITคำสั่งโดยปริยายก่อนแต่ละอินสแตนซ์ของคำสั่งโคโปรเซสเซอร์จุดลอยตัวส่วนใหญ่ (ไม่จำเป็นต้องใช้WAITคำสั่งก่อนการทำงานของ 8087 หากโปรแกรมใช้วิธีอื่นเพื่อให้แน่ใจว่ามีเวลาเพียงพอระหว่างการออกคำสั่ง 8087 ที่ไวต่อเวลา เพื่อให้ 8087 ไม่สามารถรับคำสั่งดังกล่าวได้ก่อนที่จะเสร็จสิ้นคำสั่งก่อนหน้า นอกจากนี้ หากWAITใช้คำสั่ง ก็ไม่จำเป็นต้องให้คำสั่งนั้นอยู่ก่อนคำสั่ง 8087 ถัดไปทันที) คำWAITสั่งดังกล่าวรอให้ขาอินพุต −TEST ของ 8086/8088 ถูกตั้งค่าเป็นค่าต่ำ (low) และขานี้เชื่อมต่อกับขา BUSY ของ 8087 ในทุกระบบที่มี 8087 (ดังนั้น TEST จะถูกตั้งค่าเป็นค่าต่ำเมื่อ BUSY ถูกตั้งค่าเป็นค่าต่ำ)

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

รหัสการทำงานของโคโปรเซสเซอร์ถูกเข้ารหัสด้วย 6 บิต กระจายใน 2 ไบต์ โดยเริ่มต้นด้วยลำดับการหลีกเลี่ยง (escape sequence):

┌──────────┬───────────┐ │ 1101 1xxx │ mmxx xrrr │ └───────────┴───────────┘ 

บิต "x" สามบิตแรกคือบิตสามบิตแรกของรหัสปฏิบัติการจุดลอยตัว จากนั้นบิต "m" สองบิต จากนั้นบิตสามบิตครึ่งหลังของรหัสปฏิบัติการจุดลอยตัว ตามด้วยบิต "r" สามบิต บิต "m" และ "r" ระบุข้อมูลโหมดการกำหนดที่อยู่[ 18 ]

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

ทะเบียน

สถาปัตยกรรมไมโคร 8087 แบบง่าย

ตระกูล x87 ไม่ได้ใช้ ชุด รีจิสเตอร์ ที่สามารถเข้าถึงได้โดยตรง เหมือนกับรีจิสเตอร์หลักของโปรเซสเซอร์ x86 แต่รีจิสเตอร์ x87 จะสร้างโครงสร้างสแต็ก แบบลึกแปดระดับ [ 20 ]ตั้งแต่st0ถึง โดย st7ที่st0คือระดับบนสุด คำสั่ง x87 ทำงานโดยการผลัก คำนวณ และดึงค่าออกจากสแต็กนี้ อย่างไรก็ตาม การดำเนินการแบบไดอะดิก เช่นFADD, FMUL, FCMP, และอื่นๆ อาจใช้ระดับบนสุดโดยปริยายst0หรือst1อาจใช้st0ร่วมกับตัวถูกดำเนินการหน่วยความจำหรือรีจิสเตอร์ที่ระบุอย่างชัดเจนst0ดังนั้นรีจิสเตอร์จึงสามารถใช้เป็นตัวสะสม (เช่น เป็นปลายทางและตัวถูกดำเนินการด้านซ้ายรวมกัน) และยังสามารถแลกเปลี่ยนกับรีจิสเตอร์สแต็กทั้งแปดตัวได้โดยใช้คำสั่งที่เรียกว่า(รหัส D9C8–D9CF h ) ทำให้สแต็ก x87 สามารถใช้งานได้เป็นรีจิสเตอร์ที่สามารถเข้าถึงได้อย่างอิสระเจ็ดตัวบวกกับตัวสะสม สิ่งนี้ใช้ได้กับ โปรเซสเซอร์ x86 แบบซู เปอร์สเกลาร์โดยเฉพาะ ( Pentiumปี 1993 และรุ่นต่อมา) ซึ่งคำสั่งแลกเปลี่ยนเหล่านี้ได้รับการปรับให้เหมาะสมจนไม่มีค่าปรับนาฬิกาเลย FXCH stX

มาตรฐานเลขทศลอย IEEE

เมื่อ Intel ออกแบบ 8087 เป้าหมายคือการสร้างรูปแบบจุดลอยตัวมาตรฐานสำหรับการออกแบบในอนาคต แง่มุมที่สำคัญของ 8087 จากมุมมองทางประวัติศาสตร์คือมันกลายเป็นพื้นฐานของ มาตรฐานจุดลอยตัว IEEE 754 8087 ไม่ได้นำมาตรฐาน IEEE 754 มาใช้ในรายละเอียดทั้งหมด เนื่องจากมาตรฐานยังไม่เสร็จสมบูรณ์จนถึงปี 1985 แต่80387ทำได้ 8087 มีชนิดข้อมูลจุดลอยตัวพื้นฐาน 32/64 บิตสองชนิดและรูป แบบชั่วคราวภายในแบบ ขยาย 80 บิตเพิ่มเติม (ซึ่งสามารถจัดเก็บในหน่วยความจำได้เช่นกัน) เพื่อปรับปรุงความแม่นยำในการคำนวณขนาดใหญ่และซับซ้อน นอกเหนือจากนี้ 8087 ยัง มีรูปแบบ BCD ( เลขฐานสิบเข้ารหัสไบนารี ) แบบ แพ็ค 80 บิต/18 หลักและชนิดข้อมูลจำนวนเต็ม 16, 32 และ 64 บิต[ 20 ]

ประเภทข้อมูล 8087
7 9... 7 1... 6 7... 6 3... 5 0... 3 1... 2 2... 1 5... 0 0(ตำแหน่งบิต)
± เลขชี้กำลัง เศษส่วน เลขทศนิยมความแม่นยำสูง 80 บิต
± เลขชี้กำลัง เศษส่วน เลขทศนิยมสองเท่า 64 บิต
± เลขชี้กำลัง เศษส่วน เลขทศนิยมความแม่นยำเดี่ยว 32 บิต
± จำนวนเต็ม BCD จำนวนเต็มทศนิยม 18 หลัก
± จำนวนเต็ม จำนวนเต็มไบนารี 64 บิต
± จำนวนเต็ม จำนวนเต็มไบนารี 32 บิต
± จำนวนเต็ม จำนวนเต็มไบนารี 16 บิต

อินฟินิตี้

โปรเซสเซอร์ 8087 จัดการ ค่า อนันต์โดยใช้การปิดแบบแอฟฟินหรือการปิดแบบโปรเจคทีฟ (เลือกโดยรีจิสเตอร์สถานะ) ด้วยการปิดแบบแอฟฟิน ค่าอนันต์บวกและลบจะถูกมองว่าเป็นค่าที่แตกต่างกัน ด้วยการปิดแบบโปรเจคทีฟ ค่าอนันต์จะถูกมองว่าเป็นการแสดงค่าที่ไม่มีเครื่องหมายสำหรับจำนวนที่เล็กมากหรือใหญ่มาก[ 21 ]วิธีการจัดการค่าอนันต์ทั้งสองวิธีนี้ถูกรวมเข้าไว้ในร่าง มาตรฐานจุดลอยตัว IEEE 754อย่างไรก็ตาม การปิดแบบโปรเจคทีฟ ( ระบบจำนวนจริงที่ขยายแบบโปรเจคทีฟ ) ถูกตัดออกจากการออกมาตรฐาน IEEE 754-1985 อย่างเป็นทางการในภายหลัง โปรเซสเซอร์ 80287 ยังคงใช้การปิดแบบโปรเจคทีฟเป็นตัวเลือก แต่โปรเซสเซอร์ 80387 และโปรเซสเซอร์จุดลอยตัวรุ่นต่อมา (รวมถึง 80187) รองรับเฉพาะการปิดแบบแอฟฟินเท่านั้น

อินเทอร์เฟซโคโปรเซสเซอร์

หน่วยประมวลผลร่วม 8087 แตกต่างจากหน่วยประมวลผลร่วมของ Intel รุ่นต่อมาตรงที่มันเชื่อมต่อโดยตรงกับบัสแอดเดรสและบัสดาต้า 8087 จะค้นหาคำสั่งที่ขึ้นต้นด้วยลำดับ "11011" และดำเนินการตามคำสั่งนั้น โดยจะร้องขอ DMA จาก CPU หลักทันทีเมื่อจำเป็น เพื่อเข้าถึงตัวดำเนินการในหน่วยความจำที่ยาวกว่าหนึ่งเวิร์ด (16 บิต) จากนั้นจึงปล่อยการควบคุมบัสกลับไปยัง CPU หลักทันที หน่วยประมวลผลร่วมจะไม่หยุดการทำงานของโปรแกรมจนกว่าคำสั่งของหน่วยประมวลผลร่วมจะเสร็จสมบูรณ์ และโปรแกรมจะต้องซิงโครไนซ์หน่วยประมวลผลทั้งสองอย่างชัดเจน ดังที่ได้อธิบายไว้ข้างต้น (ในส่วน " การออกแบบและการพัฒนา ") อาจเกิดปัญหาการทำงานผิดพลาดได้หากคำสั่งของหน่วยประมวลผลร่วมไม่สามารถถอดรหัสเป็นคำสั่งที่หน่วยประมวลผลร่วมเข้าใจได้ หน่วยประมวลผลร่วมรุ่นต่อมาของ Intel ไม่ได้เชื่อมต่อกับบัสในลักษณะเดียวกัน แต่รับคำสั่งผ่านพอร์ต I/O ของหน่วยประมวลผลหลัก ซึ่งทำให้เสียเวลาในการประมวลผล แต่ปัญหาการทำงานผิดพลาดที่อาจเกิดขึ้นนั้นถูกหลีกเลี่ยงได้ เนื่องจากหน่วยประมวลผลหลักจะเพิกเฉยต่อคำสั่งหากหน่วยประมวลผลร่วมปฏิเสธที่จะยอมรับ ไมโครคอนโทรลเลอร์ 8087 สามารถตรวจจับได้ว่าเชื่อมต่อกับ 8088 หรือ 8086 โดยการตรวจสอบบัสข้อมูลระหว่างรอบการรีเซ็ต

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

ผู้สืบทอด

เช่นเดียวกับโปรเซสเซอร์ 8088 และ 8086 ที่ถูกแทนที่ด้วยชิ้นส่วนรุ่นใหม่กว่า โปรเซสเซอร์ 8087 ก็ถูกแทนที่เช่นกัน โปรเซสเซอร์ร่วมอื่นๆ ของ Intel ได้แก่80287 (จริงๆ แล้ว คือ 80C287เนื่องจาก Intel เปลี่ยนไปใช้กระบวนการ CMOS ในเวลานั้น) 80387และ80187เริ่มตั้งแต่ 80486 โปรเซสเซอร์ Intel รุ่นหลังๆ ไม่ได้ใช้โปรเซสเซอร์ร่วมสำหรับการคำนวณจุดลอยตัวแยกต่างหาก โปรเซสเซอร์ 80486DX , Pentiumและรุ่นต่อๆ มามีฟังก์ชันการคำนวณจุดลอยตัวอยู่ในชิปประมวลผลหลัก ข้อยกเว้นที่สำคัญคือ 80486SX ซึ่งเป็น 80486DX ที่ได้รับการดัดแปลงโดยปิดใช้งาน FPU ที่จริงแล้ว 80487 คือชิป 80486DXแบบเต็มรูปแบบ(มีขาเพิ่มอีกหนึ่งขา) ซึ่งเมื่อติดตั้งแล้วจะปิดใช้งานและแทนที่ CPU 80486SX

บรรณานุกรม

  • ซานเชซ, ฮูลิโอ; แคนตัน, มาเรีย พี. (2007). โซลูชันซอฟต์แวร์สำหรับวิศวกรและนักวิทยาศาสตร์ . สำนักพิมพ์ CRC. ISBN 978-1-4200-4302-0.
  • ตัวประมวลผลร่วมทางคณิตศาสตร์ Intel 80x87 ที่ cpu-collection.de
  • Coprocessor.info: ข้อมูลประวัติและรูปภาพของตัวประมวลผลร่วมทางคณิตศาสตร์ 8087
  • เอกสารข้อมูลจำเพาะของหน่วยประมวลผลร่วมทางคณิตศาสตร์ Intel 8087
  • Shirriff, Ken (พฤษภาคม 2020). "การวิเคราะห์ชิปของตัวเลื่อนบิตเร็วของตัวประมวลผลร่วมทางคณิตศาสตร์ 8087 "
  • Shirriff, Ken (ธันวาคม 2025). "วงจรเรียงซ้อนของชิปคำนวณจุดลอยตัว Intel 8087 ที่ได้จากการวิศวกรรมย้อนกลับ" .
  • Shirriff, Ken (ธันวาคม 2025). "เงื่อนไขในไมโครโค้ดของชิปจุดลอยตัว Intel 8087" .
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Intel_8087&oldid=1359783857 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ อินเทล 8087

Intel 8087 ซึ่งประกาศในปี 1980 เป็น โคโปรเซสเซอร์ จุดลอยตัว ตัวแรก สำหรับตระกูลไมโครโปรเซสเซอร์ 8086 [ 4 ] [ 5 ] [ 6 ] วัตถุประสงค์ของชิปนี้คือเพื่อเร่งความเร็ว การดำเนินการ...

ตัวแปร

หมายเลขรุ่น [ 10 ] ความถี่ ชื่อรุ่น ราคา [ รายการที่ 1 ] 8087 5 เมกะเฮิร์ตซ์ กล่อง 8087 142 ดอลลาร์สหรัฐ 8087-2 8 เมกะเฮิรตซ์ กล่อง 8087-2 205 ดอลลาร์สหรัฐ 8087-1 10 เมกะเฮิร์ตซ์ กล่อง 8087-1 270 ดอลลาร์สหรัฐ ^ ราคาต่อหน่วยที่แนะนำ

การออกแบบและการพัฒนา

ก่อนหน้านี้ Intel ได้ผลิต หน่วยประมวลผลเลขคณิต 8231 และ หน่วยประมวลผลจุดลอยตัว 8232 ซึ่งออกแบบมาเพื่อใช้กับ โปรเซสเซอร์ 8080 หรือโปรเซสเซอร์ที่คล้ายกัน และใช้บัสข้อมูล 8 บิต โดยเชื่อมต่อกับระบบโฮสต์ผ่านทาง I/O ที่ตั้งโปรแกรมไว้หรือตัวควบคุม DMA [ 11 ]

ทะเบียน

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