ทำไม x86 ถึง 32 บิตเมื่อ x64 หมายถึง 64 บิต [ปิด]


97

คำถามของฉันคือทำไมการจดชวเลขสำหรับ x86 แบบ 32 บิตเมื่อชวเลขสำหรับ 64 บิตเป็น 64

ฉันเดาว่ามันมีบางอย่างที่เกี่ยวข้องกับยุค 386 และ 486 เมื่อโปรเซสเซอร์ 32 บิตสิ้นสุดในปี 86 แต่แน่นอนว่ามีโปรเซสเซอร์ที่ไม่ได้สิ้นสุดใน 86 และยังเป็น 32 บิตอยู่ใช่ไหม

ไม่มีใครรู้ประวัติของเรื่องนี้หรือบอกให้ฉันทราบถึงแหล่งข้อมูลที่ดี?

ขอบคุณ


7
อยากรู้ +1 นี้เสมอสำหรับความอยากรู้อยากเห็น!
Gabriel Guimarães

ฉันเพิ่งถามตัวเองเมื่อเช้านี้!
Sean Howat

9
ฉันคิดว่าคำเต็มไม่ใช่ x64 แต่ x86_64
Kedare

3
IMHO "x86" ไม่ได้หมายถึง (และไม่เคยมีความหมาย) เพียงแค่สถาปัตยกรรม 32 บิตทั่วไป คำตอบของดาเนียลด้านล่างให้ประวัติศาสตร์ มีโปรเซสเซอร์ 32 บิตอื่น ๆ อีกมากมายที่ทั้งคู่ร่วมกัน (หรือเก่ากว่า) รุ่น 80386 และมีเพียงไม่กี่คนที่ยังมีชีวิตอยู่และอยู่ในตลาดในปัจจุบัน ตัวอย่างเช่นตระกูล 68000 (ใช้ใน Macintosh ดั้งเดิม) นั้นเก่ากว่ารุ่น 8086 มาก การเรียกร้องของ PowerPC เพื่อชื่อเสียงเมื่อใหม่คือการจำลองที่สนับสนุนทั้ง x86 และ 68K ARM นั้นเป็นรุ่น 32 บิตที่ทันสมัยกว่าและค่อนข้างธรรมดาเช่นกัน
RBerteig

ฉันไม่เห็นว่าเป็น x64 อย่างน้อยฉันก็ไม่เขียนมันอย่างนั้น ฉันเขียนมันเป็น 32b และ 64b ตามลำดับ
vol7ron

คำตอบ:


34

อาจเป็นเพราะเส้น x86 นั้นมีความหมายเหมือนกันกับตัวประมวลผล 32 บิตในบางเวลาในขณะที่ x64 นั้นได้รับการออกแบบมาเป็นพิเศษสำหรับ 64 บิตเนื่องจากแอปพลิเคชันและระบบปฏิบัติการได้รับการเปลี่ยนผ่านและตอนนี้ (เช่นซอฟต์แวร์ VM บางตัว)

กล่าวอีกนัยหนึ่งมันเป็นการตลาดที่มากกว่าเทคโนโลยีด้วยเหตุผล


20
x86 มาจาก 8086, 286, 386, 486, 586 และอื่น ๆ มันอาจเป็นได้อย่างง่ายดาย "* 86"
gWaldo

6
และเนื่องจาก x86 มีต้นกำเนิดมาจาก 8086 ฉันจึงไม่สามารถหาสาเหตุได้ว่าทำไมมันถึงเกี่ยวข้องกับ 32 บิตเสมอ ในขณะที่ฉันจำได้ว่า 8086 เป็นโปรเซสเซอร์ 16 บิตซึ่งใช้การลงทะเบียนสองครั้งเพื่อเปิดใช้งานการกำหนดแอดเดรสหน่วยความจำ 32 บิต Intel นั้นยังห่างไกลจากการเป็นผู้นำในสนามในสมัยนั้น BTW @gWaldo คุณออก 80186
John Gardeniers

เหตุบังเอิญ. จากวิกิพีเดียทั้งสถาปัตยกรรมและชิปทางกายภาพได้รับการพัฒนาค่อนข้างเร็วโดยคนกลุ่มเล็ก ๆ และใช้องค์ประกอบ microarchitecture พื้นฐานและเทคนิคการใช้งานทางกายภาพแบบเดียวกับที่ใช้สำหรับผู้สูงอายุรุ่น 8085 เล็กน้อย เป็นความต่อเนื่อง) " นอกจากนี้ยังมี 8087 และ 8089 ด้วย
บาร์ตซิลเวอร์ส

ใช่ฉันออกจาก 80186 เพราะฉันไม่สามารถจำได้ว่ามันเป็นผลิตภัณฑ์ที่วางจำหน่าย (และรู้สึกขี้เกียจเกินไปที่จะมองหามัน ... )
gWaldo

1
คำตอบนี้ไม่มีอะไรผิดปกติ แต่ฉันคิดว่าดาเนียลควรเป็นที่ยอมรับอย่างจริงใจเนื่องจากมีรายละเอียดมากขึ้น
Massimo

189

มีครั้งหนึ่งเคยเป็นชิปที่เรียกว่า 8086 ด้วยรุ่นที่ถูกกว่าที่เรียกว่า 8088 ที่ใช้ในคอมพิวเตอร์ส่วนบุคคลที่เรียกว่า IBM PC มีการปรับปรุงชิปรุ่นนั้นและเรียกว่า 80186 แม้ว่าจะไม่ใช่รุ่นที่ได้รับความนิยมมาก อย่างไรก็ตามรุ่นปรับปรุงที่ได้รับการปรับปรุงนั้นถูกสร้างขึ้นมาและเรียกว่า 80286 ตอนนี้มันเป็นชิปที่ได้รับความนิยมอย่างมากโดยเฉพาะอย่างยิ่งเพราะมันถูกใช้ในคอมพิวเตอร์ที่เรียกว่า IBM PC AT

ต่อมา Intel ซึ่งสร้างและจำหน่ายชิป 8086, 8088, 80186 และ 80286 ทั้งหมดนี้มีสถาปัตยกรรม 16 บิตเห็นความจำเป็นในการสร้างชิป 32 บิตเพื่อแข่งขันกับสิ่งอื่นที่คล้ายคลึงกัน เพื่อใช้ประโยชน์จากตำแหน่งที่มีอยู่จึงทำให้ชิปใหม่สามารถใช้งานซอฟต์แวร์ที่ผลิตสำหรับชิปที่กล่าวถึงก่อนหน้านี้ โดยธรรมชาติแล้ว Intel เรียกชิปตัวใหม่นี้ว่า 80386

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

หลังจากผ่านไประยะหนึ่ง Intel ได้เปิดตัวชิปใหม่ แต่มันตัดสินใจที่จะลดลง 80 ดังนั้นมันจึงกลายเป็น 486 แทนที่จะเป็น 80486 ในทำนองเดียวกันผู้คนก็วาง "80" จากด้านหน้าของ "80x86" และเรียกสิ่งนี้แค่ x86 .

ตอนนี้ฉันค่อนข้างแน่ใจว่าบางคนจะมาและพูดว่า Intel ทำชิป x86 ของพวกเขาในเวลาเช่นนั้นซึ่งพวกเขาทำ แต่ฉันไม่สนใจ

ความจริงก็คือตัวเลขกลางที่เพิ่มขึ้นเรื่อย ๆ นั้นเพิ่มขึ้นเป็น 80x86 และ x86 นั้นมาจากนั้น - แม้ว่า 80186 และ 80286 ไม่ใช่ 32 บิต

ดังนั้นเมื่อในที่สุด Intel ถึง 64 บิตสิ่งที่เรียกว่าสถาปัตยกรรมใหม่ของมัน? ขวา! IA64! :-) นอกจากนี้ยังเปลี่ยนชื่อ x86 เป็น IA32 ย้อนหลังเพื่อที่จะพูด มีเพียง IA64 ที่ไม่สามารถใช้งานร่วมกับ x86 ได้ฉันหมายถึง IA32 ดังนั้นทุกคนจึงไม่สนใจ

และจากนั้นก็มาที่ AMD ซึ่งตัดสินใจว่าตลาดต้องการซีพียู 64 บิตที่เข้ากันได้เท่าที่เป็นไปได้กับตระกูล x86 พวกเขาเรียกมันว่า "x86-64" ตระกูลและพวกเขาก็ประสบความสำเร็จอย่างมาก มากเสียจนอินเทลลงเอยด้วยการไม่ยอมตามด้วย CPU 64 บิตของตัวเองตาม x86

ต่อมาเนื่องจากคนขี้เกียจ x86-64 จึงกลายเป็นที่รู้จักในฐานะ x64

ดังนั้นเพื่อตอบคำถามของคุณเนื่องจาก x64 สั้นกว่า x86-64


10
ไม่ใช่เพื่อเลือก แต่จะต้องสมบูรณ์แน่นอน AMD ไม่เคยทำตลาดชิป 64 บิต x64 หรือ x86_64 ที่ AMD ออกมามีส่วนขยาย 64 บิตเพิ่มในชุดคำสั่ง x86 ที่ Intel สร้างขึ้น - ดังนั้น x86_64 ซึ่งต่างจาก Itanium ของ Intel (IA_64) ซึ่งเป็นชิป 64 บิตที่แท้จริงซึ่งไม่สามารถใช้ร่วมกับชุดคำสั่ง x86 ได้
Jeremy Hajek

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

3
เพื่อชี้แจง: AMD เรียกว่าส่วนขยายของพวกเขา AMD64 และ Intel เรียกพวกเขา (ที่พวกเขาได้รับใบอนุญาตจาก AMD) Intel64 มีความแตกต่างเล็กน้อยบางประการ (ไม่เข้ากันได้ 100%) ดังนั้นผู้ขายระบบปฏิบัติการส่วนใหญ่จึงมักใช้กลุ่มย่อยทั่วไป ในดีวีดี Windows 2008 โฟลเดอร์การติดตั้งนั้นเรียกว่า AMD64 จริง ๆ (ตรงกันข้ามกับ I386 บน 32 บิต) ฉันไม่รู้ว่ามาจากไหน x86_64: จาก AMD เนื่องจากเป็นส่วนขยายไปยัง x86 หรือจาก Unix-Vendors ที่ต้องการคำที่เป็นกลาง
Michael Stum

20
@ Jeremy Hajek: AMD64 / x86_64 เป็นการออกแบบชิป 64 บิตที่แท้จริงโหมด 64 บิตไม่ใช่การจำลองและไม่มีผลกระทบต่อประสิทธิภาพ (และอันที่จริงแล้วโหมด 32 บิตไม่ใช่การจำลอง) ชิปมีชุดคำสั่ง 64 บิตและการลงทะเบียน 64 บิตซึ่งทำให้เป็นชิป 64 บิต ฉันไม่รู้ว่าคุณได้รับความประทับใจที่ AMD ไม่เคยทำตลาดชิป 64 บิตมาจากไหน มันเป็นความจริงว่า AMD ไม่เคยทำการตลาด 64- บิตที่ทำลายความเข้ากันได้กับชิป 32 บิตเช่น Intel กับ IA64
Lie Ryan

1
x64 ใช้ในคำศัพท์ Windows / Microsoft เท่านั้น GNU / Linux เรียกสถาปัตยกรรม x86-64 หรือ amd64 (และเรียกใช้ x86 แบบ 32 บิตi386) เป็นเพียง (หรืออย่างน้อยส่วนใหญ่) ในโลก Windows ที่ x86 หมายถึงเฉพาะ 32-bit x86 คนฮาร์ดแวร์ส่วนใหญ่ที่พูดถึง CPU เข้าใจ x86 หมายถึง CPU ใด ๆ ที่เข้ากันได้กับ 8086 โดยไม่คำนึงถึงโหมดการทำงานของมัน (ปกติโหมดยาว 64 บิตหรือบางครั้งโหมดเข้ากัน 32- บิตภายใต้เคอร์เนล 64 บิต) ถ้า ฉันพูดว่า "x86 มีประสิทธิภาพในการปล่อย / รับ atomics ที่ปลอดล็อค" ฉันไม่ได้รวม 64- บิต
Peter Cordes


3

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

x86 เริ่มต้นจากชุดคำสั่ง 16 บิตสำหรับโปรเซสเซอร์ 16 บิต (ตัวประมวลผล 8086 และ 8088) จากนั้นขยายไปยังชุดคำสั่ง 32 บิตสำหรับตัวประมวลผล 32 บิต (80386 และ 80486) และตอนนี้ได้ขยายไปถึง ชุดคำสั่ง 64 บิตสำหรับโปรเซสเซอร์ 64 บิต มันเคยถูกเขียนเป็น 80x86 เพื่อสะท้อนถึงการเปลี่ยนแปลงค่าในช่วงกลางของหมายเลขรุ่นชิป แต่บางแห่งตามแนวที่ 80 ในด้านหน้าถูกทิ้งเหลือเพียง x86

ตำหนิ Pentium และเป็นลูกหลานสำหรับการเปลี่ยนวิธีการที่โปรเซสเซอร์ได้รับการตั้งชื่อและทำการตลาดแม้ว่าโปรเซสเซอร์รุ่นใหม่ทั้งหมดที่ใช้ชุดคำสั่ง x86 ของ Intel จะยังคงเรียกว่าเข้ากันได้กับ x86, i386 หรือ i686 (ซึ่งหมายความว่าพวกเขาทั้งหมดใช้ส่วนขยายของ 8086 ดั้งเดิม ชุดคำสั่ง)

x64 เป็นคนแปลก ๆ ที่นี่ ชื่อแรกสำหรับส่วนขยาย 64- บิตไปยังชุด x86 เรียกว่า x86-64 ต่อมาได้รับการตั้งชื่อให้เป็น AMD64 (เนื่องจาก AMD เป็นรุ่นที่ได้มาพร้อมกับส่วนขยาย 64- บิตเดิม) Intel ให้สิทธิ์ใช้งานชุดคำสั่ง 64 บิตและตั้งชื่อรุ่น EM64T ของตน ทั้งชุดคำสั่งและตัวประมวลผลที่ใช้พวกมันทั้งหมดยังถือว่าเป็น x86


x86-64 กลับมาเป็นคำศัพท์ที่เป็นกลางสำหรับผู้ขายซึ่งรวมถึง AMD64 และ EM64T 80 ชั้นนำนั้นมีอยู่เสมอในหมายเลขชิ้นส่วน แต่หลังจาก 80186 มันง่ายขึ้นเพียงแค่พูดว่า 186 กับ 8086 กับ 386 Pentium ไม่เคยเรียกอย่างเป็นทางการ 586 หรือ 80586 ในหมายเลขชิ้นส่วน ( cpu-world.com/sspec/Pentium html ); เงื่อนไขของ i586 และ i686 นั้นเป็นไปตามฟิลด์ "ตระกูล" ของ CPUID ว่าซีพียูรายงานตัวเองอย่างไร
Peter Cordes

3

x 86 x 64 และเป็นชื่อของ CPU สถาปัตยกรรม มีสถาปัตยกรรมซีพียูมากกว่าจำนวนบิตต่อการลงทะเบียน

x64 take เป็นชื่อเนื่องจากการข้ามไปยัง 64 บิตเป็นการเปลี่ยนแปลงที่ใหญ่ที่สุดในสถาปัตยกรรมจาก x86 แต่การกระโดดนั้นอยู่ไกลจากการเปลี่ยนแปลง เพียงอย่างเดียว

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


2

ดีx64ไม่เคยจริงๆมาจากผู้ผลิตที่มีชุดคำสั่งหรือชิป เดิมมาจาก Windows XP Windows รุ่น 64 บิตแรกได้รับชื่อWindows XP x64แล้ว และฉันเดาว่าคำนั้นx64ติดอยู่ตรงนั้น

x86ชื่อเล่นมาจากการเรียนการสอน 32bit ชุด ดังนั้นx86โปรเซสเซอร์ทั้งหมด(โดยไม่มีผู้นำ80) จึงรันชุดคำสั่ง 32 บิตเดียวกัน (ดังนั้นจึงเข้ากันได้ทั้งหมด) ดังนั้นx86ได้กลายเป็นชื่อ defacto สำหรับชุดนั้น (และด้วยเหตุนี้ 32 บิต)

เดิมขยาย 64 บิตของเอเอ็มดีในชุดที่ถูกเรียกว่าx86 AMD64อินเทลต่อมาได้รับใบอนุญาต แต่แม้จะยังคงชื่อสำหรับ 64 บิตชุดคำสั่งเป็นปกติx86AMD64

แต่ส่วนใหญ่เป็นความแตกต่างของแบรนด์ นี่คือความแตกต่างเล็กน้อยของระบบปฏิบัติการที่สำคัญที่เรียกว่า 64 บิตแต่ละรส:

โดยทั่วไปดูเหมือนว่า Linux จะชอบx86_64BSD amd64และคนอื่น ๆชอบx64...

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


1
x64 ปัจจุบันทั้งหมดเป็นจริงของ AMD-64 ตั้งแต่ IA64 เสียชีวิต
Overmind

@Overmind: x64 และ IA-64 เป็นสิ่งที่แยกจากกันเสมอ IA-64 ไม่เกี่ยวข้องกับ x86 หรือ x86-64 อย่างสมบูรณ์ (ยกเว้นว่าการใช้งาน IA-64 ก่อนหน้านั้นรวมถึงแกน x86 สำหรับเหตุผลที่รองรับเนื่องจาก Intel ... )
Peter Cordes

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