ระบบปฏิบัติการ 32 บิตสามารถทำงานในโปรเซสเซอร์ 64 บิตได้หรือไม่?


25

ความแตกต่างระหว่างระบบปฏิบัติการ 32 บิตและระบบปฏิบัติการ 64 บิตคืออะไร? ระบบปฏิบัติการ 32 บิตสามารถทำงานในโปรเซสเซอร์ 64 บิตได้หรือไม่?


หากคุณกำลังพูดถึง Windows (และแท็ก Win32 ดูเหมือนจะระบุว่า) แล้วใช่แน่นอน - Vista และ Win7 64- บิตรองรับแอพพลิเคชันเกือบ 32 บิตทั้งหมดผ่านเลเยอร์ความสามารถในการทำงาน - ฉันยังไม่พบอะไรเลย 'T ทำงานได้ดีบน Vista 64 บิต (ยกเว้นสำหรับคนขับรถระดับระบบ)
marc_s

5
คำถามดูเหมือนว่าคุณสามารถติดตั้ง Win Vista x86 ลงในกล่องที่มีตัวประมวลผล 64 บิตได้หรือไม่แทนที่จะใช้ x86 แอพที่ทำงานบน Win Vista x64
KTC

คำตอบ:


34

คำถามของคุณเป็นสถาปัตยกรรมเฉพาะ x64 นั้นเป็นส่วนขยายของสถาปัตยกรรม x86 รองรับพื้นที่ที่อยู่ 64 บิต มันมีคำแนะนำใหม่และการลงทะเบียนใหม่

คุณสามารถเรียกใช้ Windows86 แบบ 32 บิตบนเครื่อง x64 โปรดทราบว่าคุณไม่สามารถทำได้บนระบบ Itanium 64- บิต


16

ตัวประมวลผล 64 บิตสามารถเรียกใช้ทั้ง 32 และ 64 OS (อย่างน้อย x64 สามารถ) ตัวประมวลผลแบบ 32 บิตสามารถทำงานได้เพียง 32 ตัว

ความแตกต่างส่วนใหญ่เกี่ยวกับขนาดของตัวชี้ / การอ้างอิง บนเครื่อง 64 บิตคุณสามารถอ้างอิงที่อยู่ในช่วงที่อยู่ 64 บิต (ซึ่งจะทำให้คุณมีหน่วยความจำ 2 ^ 64 ไบต์) ใน 32 บิตคุณสามารถระบุได้เพียง 2 ^ 32 ไบต์ (= 4 GB) ตอนนี้ถ้าคุณดูที่คอมพิวเตอร์ปัจจุบันมันชัดเจนว่าทำไมโลกถึงย้ายไปอยู่ที่ 64 บิต: 32 บิตไม่สามารถจัดการกับ RAM ทั้งหมดได้อย่างง่ายดายอีกต่อไป

ใน x64 (AMD / Intel) คุณมีสิทธิประโยชน์เพิ่มเติม 64 บิต ซีพียูมีการลงทะเบียนมากขึ้นและช่วยให้รหัสมีประสิทธิภาพมากขึ้น

ในสถาปัตยกรรมอื่น ๆ ความแตกต่างระหว่าง 64 และ 32 บิตนั้นชัดเจนน้อยกว่า ตัวอย่างเช่น Nintendo 64 (จำไว้ว่า?) เป็นเครื่อง 64 บิต แต่รหัสส่วนใหญ่เป็น 32 บิต ดังนั้นในกรณีที่ 64 บิตทำหน้าที่เป็นเคล็ดลับการตลาดมากขึ้น


3

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

ในสมัยก่อนเมื่อซีพียูเมื่อผู้คนนั่งและสาน (พัน) สายไฟระหว่างโปรเซสเซอร์และหน่วยความจำคุณจะต้องใช้ 32 หรือ (ตามหลักเหตุผลเพราะมันไม่มีอยู่จริงในเวลานั้น) 64 สายระหว่าง CPU และตัวควบคุมหน่วยความจำที่จะใช้เพื่อระบุที่อยู่หน่วยความจำที่คุณต้องการเข้าถึง ตัวอย่างเช่นสมมติว่าเรามีสถาปัตยกรรมหน่วยความจำ 2 บิต: การส่ง 00 จะเลือกที่อยู่ 0, 01 จะเลือกที่อยู่ 1, 10 จะเลือกที่อยู่ 2 และ 11 จะเลือกที่อยู่ 3 นี้ 2 บิตจะให้เรา 2 ^ 2 ไบต์ ของ RAM (4 ไบต์)

หากคุณใช้ CPU แบบ 32 บิตและคุณเพิ่มสายไฟอีก 32 เส้นระหว่าง CPU และตัวควบคุมหน่วยความจำเพื่อให้คุณสามารถรองรับหน่วยความจำได้อย่างน่าอัศจรรย์ตอนนี้คุณมี "64- บิต CPU" ที่สามารถเรียกใช้แบบ 32 บิตได้ รหัสหรือรหัส 64 บิต สิ่งนี้หมายความว่าอย่างไรและสิ่งนี้เกิดขึ้นได้อย่างไร? ทีนี้ลองเอาซีพียู 2 บิตของเราจากส่วนก่อนหน้าของคำตอบนี้และเพิ่มสายอื่นเปลี่ยนเป็นซีพียู 3 บิตพาเราจาก 4 ไบต์เป็น 2 ^ 3 หรือ 8 ไบต์ของ RAM

รหัส "2 ไบต์" ที่มีอยู่จะทำงานโดยตั้งค่าสาย 2 เส้นล่าสุดตามที่ระบุไว้ด้านบน (00-11) เราจะเชื่อมต่อการเชื่อมต่อเพิ่มเติมให้เป็นศูนย์โดยค่าเริ่มต้นดังนั้นจริง ๆ แล้วเมื่อรหัส 2 ไบต์ทำงานเมื่อเลือก 00 จะเป็นการเลือก 000 และเมื่อเลือก 11 จะเป็นการเลือก 011 จริง ๆ แล้วง่าย

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

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

นั่นคือเรื่องราวของ Intel Itanium ซึ่งเป็นที่รู้จักกันดีในนาม "Itanic" เพราะมันจมลงอย่างหนาแน่น มันควรจะประกาศในยุค 64- บิตใหม่และมันเป็นสิ่งที่เห็น คำแนะนำความยาวแปรผันแคชขนาดใหญ่พื้นที่แอดเดรส 64 บิตจำนวนรีจิสเตอร์สุดตื่นเต้นสุดเจ๋งสุด ๆ และซุปเปอร์ยากที่จะโน้มน้าวให้ทุกคนคอมไพล์หรือเขียนรหัสมรดก 20 ปีใหม่สำหรับ สิ่งนี้กลับมาเมื่อเอเอ็มดีและ Intel แข่งขันกันจริงและเอเอ็มดีมีความคิดที่ยอดเยี่ยมในการพูดว่า "อย่าลืมทั้งหมดนี้ 'แก้ไขปัญหาทั้งหมดของโลกธุรกิจ' และเพียงแค่เพิ่มสาย 32 เพิ่มเติมไปยัง i386 และทำให้รองรับ 64- บิต บิตซีพียู "และสถาปัตยกรรมซีพียู x86_64 ถือกำเนิดขึ้น

ในความเป็นจริงถ้าคุณดูชื่อเคอร์เนลและแหล่งที่มาสำหรับระบบปฏิบัติการหลัก (Linux, Windows, BSDs ฯลฯ ) คุณจะพบว่าพวกมันทิ้งกระจุยกระจายโดยอ้างอิงกับ AMD64 CPU และสถาปัตยกรรม AMD64 AMD ออกมาพร้อมกับกลยุทธ์การชนะเพื่อให้ทุกคนเปลี่ยนไปใช้โลก 64 บิตในขณะที่รักษาความเข้ากันได้กับแอพพลิเคชั่น 32 บิตในแบบที่ระบบปฏิบัติการ 32 บิตสามารถทำงานบนฮาร์ดแวร์ 64 บิตหรือแม้แต่แอปพลิเคชัน 32 บิต สามารถเรียกใช้บนระบบปฏิบัติการ 64 บิตบนฮาร์ดแวร์ 64 บิต Intel ตามหลัง suite เร็วกว่าด้วยสถาปัตยกรรม "Intel EM64T" (ซึ่งโดยทั่วไปเหมือนกับ AMD64) และ x86_64 ชนะในขณะที่ Itanic และอื่น ๆ เช่น MIPS64 และ ALPHA64 ไม่เห็นในตลาดเดสก์ท็อป / เซิร์ฟเวอร์อีกต่อไป

tl; dr amd64 aka x86_64 ซีพียูได้รับการออกแบบให้เข้ากันได้กับทั้งเคอร์เนลและรหัส 32- และ 64- บิต แต่ซีพียู 64- บิตส่วนใหญ่นั้นไม่เข้ากันได้ในทางเดียวกัน CPU แบบ 32 บิตสามารถเข้าถึงที่หน่วยความจำ 4GiB ส่วนใหญ่ในขณะที่ CPU แบบ 64 บิตสามารถเข้าถึง 16 EiB ที่สวยงาม (16 × 1024 ^ 6 ไบต์หรือ 4 พันล้านเท่าของหน่วยความจำ 4GiB)


1
คุณมีข้อผิดพลาดตามข้อเท็จจริงบางประการ: 1) Itanium ไม่ได้แนะนำคำแนะนำความยาวผันแปร (x86 ทุกตัวมี) มันเพิ่มคำแนะนำที่ยาวมากซึ่งมีความสามารถในการดำเนินงานพร้อมกันในหลาย 64 บิตปริมาณ 2) x86_64 ไม่ได้แค่ตบที่บรรทัดที่อยู่เพิ่มเติม; มันยังเพิ่มการลงทะเบียนพิเศษจำนวนมากและขยายการลงทะเบียนทั้งหมด (และ ALU ที่ทำงานกับพวกเขา) จาก 32 เป็น 64 บิต เปรียบเทียบสิ่งนี้กับ 8086/8088 ซึ่งเพิ่มที่อยู่อีก 4 บรรทัดและตัวเลือกเซกเมนต์ลงทะเบียน แต่เก็บทั้งหมดไว้ที่ 16 บิตเช่น 8080 ก่อนหน้า
psusi

-1

ทั้งระบบปฏิบัติการ 32 และ 64 บิตสามารถทำงานบนโปรเซสเซอร์ 64 บิต แต่ระบบปฏิบัติการ 64 บิตสามารถใช้พลังงานเต็มรูปแบบของโปรเซสเซอร์ 64 บิต (ลงทะเบียนขนาดใหญ่ขึ้นคำแนะนำเพิ่มเติม) - ในระยะสั้นสามารถทำงานได้มากขึ้นในเวลาเดียวกัน โปรเซสเซอร์ 32 บิตรองรับ Windows OS เพียง 32 บิต


3
สิ่งนี้ไม่ถูกต้องโดยทั่วไป แต่ถูกต้องสำหรับ x64 โดยเฉพาะ
ChrisInEdmonton

1
โปรเซสเซอร์ 32 บิตจะเรียกใช้ระบบปฏิบัติการใด ๆ ที่ออกแบบมาเพื่อทำงานบนสถาปัตยกรรมโปรเซสเซอร์ดังกล่าว
Waxhead

32 บิต OS x 86 เห็นได้ชัดไม่สามารถทำงานบน ARM64 ดังนั้น32 and 64 bit OS can run on a 64 bit processorโดยทั่วไปไม่ถูกต้อง
phuclv

@ Phúcอาจมีโปรเซสเซอร์ 64 บิตซึ่งไม่สนับสนุนแฝด 32 บิตของพวกเขา อย่างไรก็ตามคุณใช้ตรรกะเท็จในการโต้แย้งของคุณ SunOS 4.4.1 บน 32 บิต MicroSparc จะไม่ทำงานบน ARM32 เช่นกัน การใช้ลอจิกของคุณหมายถึงโดยทั่วไปจะไม่ถูกต้องที่ระบบปฏิบัติการ 32 บิตสามารถทำงานบนโปรเซสเซอร์ 32 บิตได้ หากฉันเพิกเฉยต่อสามัญสำนึกเช่นคุณฉันสามารถโต้แย้งได้ว่าระบบปฏิบัติการ 32 บิต ARM ทำงานบน Intel i386 / x64 เนื่องจากนักพัฒนา Android ใช้ภาพ Android ARM บนเครื่อง Wintel ของพวกเขา แน่นอนว่าระบบปฏิบัติการสำหรับตระกูลโปรเซสเซอร์ที่เหมาะสมและแน่นอนว่าระบบปฏิบัติการจะทำงานบนฮาร์ดแวร์ที่มีอยู่จริงและไม่ใช่การจำลอง (พอพูดออกไป)
Tino
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.