หลายคนน่าจะคุ้นกันดีว่า Windows แบบ 32-bit ต่อให้ใส่ RAM ไป 8GB หรือ 16GB ระบบก็มักใช้งานได้เพียงประมาณ 4GB เท่านั้น จนกลายเป็นภาพจำว่า “32-bit รองรับ RAM ได้สูงสุดแค่ 4GB”
แต่จริง ๆ แล้วเรื่องนี้ไม่ได้เป็นข้อจำกัดทางเทคนิคแบบตายตัว เพราะซีพียู x86 แบบ 32-bit และ Windows ในยุคนั้นมีเทคโนโลยีที่ช่วยให้ระบบเข้าถึง RAM ได้มากกว่า 4GB อยู่แล้ว เพียงแต่ Microsoft เลือกจำกัด Windows ฝั่งผู้ใช้ทั่วไปเอาไว้ เนื่องจากปัญหาความเข้ากันได้กับไดรเวอร์รุ่นเก่า
Raymond Chen วิศวกรของ Microsoft ซึ่งทำงานเกี่ยวกับ Windows มานานกว่า 30 ปี ได้อธิบายเรื่องนี้ผ่านบล็อก The Old New Thing ว่า Windows XP SP2 มีการใช้งานเทคโนโลยี Physical Address Extension หรือ PAE ซึ่งทำให้ซีพียู 32-bit สามารถเข้าถึง Physical Memory ที่อยู่เหนือ 4GB ได้ แต่ Microsoft เลือกเปิดการใช้งาน RAM เหนือ 4GB อย่างเต็มรูปแบบเฉพาะ Windows Server บางรุ่นเท่านั้น

ทำไม 32-bit ถึงมีเลข 4GB เข้ามาเกี่ยวข้อง
พื้นฐานมาจากการที่ Address แบบ 32-bit สามารถมีค่าได้ทั้งหมด 2^32 ค่า หรือ 4,294,967,296 ค่า และเมื่อหนึ่ง Address ใช้อ้างอิงข้อมูลขนาด 1 Byte ก็จะครอบคลุมพื้นที่ได้ประมาณ 4GB
พูดง่าย ๆ คือ ถ้ามี “เลขที่อยู่” ขนาด 32-bit เราจะมีเลขที่อยู่สำหรับข้อมูลได้ประมาณ 4.29 พันล้านตำแหน่ง จึงเป็นที่มาของ Address Space ขนาดประมาณ 4GB
ทั้งนี้ต้องแยกให้ออกระหว่าง Virtual Address ที่โปรแกรมมองเห็น กับ Physical Address ซึ่งเป็นตำแหน่งของหน่วยความจำจริงที่ระบบใช้จัดการ RAM เพราะสองอย่างนี้ไม่จำเป็นต้องมีขนาดเท่ากัน

จุดที่ PAE เข้ามาช่วย
PAE หรือ Physical Address Extension เป็นความสามารถของซีพียู x86 ที่ช่วยขยาย Physical Address ให้กว้างกว่า 32-bit ตัวอย่างเช่น ซีพียูบางรุ่นสามารถใช้ Physical Address ขนาด 36-bit ทำให้ในทางทฤษฎีสามารถอ้างอิง RAM ได้สูงสุด 64GB แม้ตัวโปรแกรมและ Pointer จะยังเป็นแบบ 32-bit อยู่ก็ตาม
ดังนั้น Windows 32-bit จึงสามารถมี RAM จริงมากกว่า 4GB ได้ โดยระบบปฏิบัติการทำหน้าที่จัดการว่า Virtual Address ของแต่ละโปรแกรมจะถูก Map ไปยัง Physical RAM ส่วนใด
ตัวอย่างง่าย ๆ โปรแกรม A อาจมี Address Space ของตัวเอง และโปรแกรม B ก็มี Address Space ของตัวเอง โดยทั้งสองโปรแกรมไม่จำเป็นต้องรู้เลยว่าข้อมูลจริงของตัวเองถูก Windows นำไปวางไว้ตรงไหนบน RAM
ตรงนี้จึงไม่เหมือนกับการบอกว่า “โปรแกรม 32-bit โปรแกรมเดียวสามารถมองเห็น RAM 64GB ได้ทั้งหมด” เพราะ Pointer ของโปรแกรม 32-bit ยังคงมีขนาด 32-bit และ Virtual Address Space ก็ยังมีข้อจำกัดของมันอยู่ PAE เพียงช่วยให้ระบบปฏิบัติการสามารถบริหาร Physical RAM รวมของทั้งเครื่องได้มากขึ้นเท่านั้น

แล้วทำไม Microsoft ไม่เปิดให้ใช้เกิน 4GB ไปเลย
ปัญหาหลักอยู่ที่ไดรเวอร์รุ่นเก่า ถ้าอธิบายให้เห็นภาพ Physical Address ก็คือตำแหน่งในหน่วยความจำจริงที่ระบบใช้ระบุว่าข้อมูลแต่ละส่วนอยู่ตรงไหน
ไดรเวอร์ฮาร์ดแวร์จำนวนหนึ่งในยุคนั้นถูกเขียนขึ้นโดยสมมติว่า Physical Address จะมีขนาดไม่เกิน 32-bit หรือไม่เกินช่วง 4GB เพราะตอนที่ไดรเวอร์เหล่านี้ถูกพัฒนา คอมพิวเตอร์ทั่วไปแทบไม่มี RAM มากขนาดนั้นอยู่แล้ว
ปัญหาจะเกิดขึ้นเมื่อ Windows เปิด PAE และนำข้อมูลไปวางไว้ใน RAM ตำแหน่งที่สูงกว่า 4GB หากไดรเวอร์บางตัวได้รับ Physical Address ดังกล่าว แต่โค้ดของมันรองรับ Address ได้เพียง 32-bit ค่าบางส่วนอาจถูกตัดทิ้งจนกลายเป็น Address คนละตำแหน่ง
ผลก็คือ จากที่ควรจะอ่านหรือเขียนข้อมูลใน RAM ตำแหน่งหนึ่ง มันอาจไปอ่านหรือเขียนผิดตำแหน่งแทน เกิด Memory Corruption ระบบค้าง โปรแกรมพัง หรือหนักสุดก็จอฟ้าได้
โดยเฉพาะไดรเวอร์ที่ใช้ DMA ซึ่งอนุญาตให้อุปกรณ์ฮาร์ดแวร์เข้าถึงหน่วยความจำโดยตรง ปัญหาประเภทนี้จึงสามารถสร้างความเสียหายกับระบบได้ค่อนข้างรุนแรง
Microsoft ระบุในเอกสารเกี่ยวกับ PAE ในยุคนั้นว่า ไดรเวอร์จำนวนมากไม่ได้ถูกทดสอบกับระบบที่เปิดใช้งาน PAE จึงมีการปรับ Hardware Abstraction Layer หรือ HAL ของ Windows XP SP2 และ Windows Server 2003 SP1 Standard Edition ให้จำกัด Physical Address Space ไว้ที่ 4GB เพื่อรักษาความเข้ากันได้กับไดรเวอร์เหล่านี้

แล้วทำไม Windows Server ถึงใช้ RAM เกิน 4GB ได้
เหตุผลคือสภาพแวดล้อมต่างกัน คอมพิวเตอร์สำหรับผู้ใช้ทั่วไปสามารถต่อฮาร์ดแวร์ได้สารพัด ตั้งแต่การ์ดเสียง การ์ดจอ Printer Scanner การ์ด PCI ไปจนถึงอุปกรณ์เก่า ๆ ที่ใช้ไดรเวอร์จากผู้ผลิตหลายราย
ขณะที่เครื่อง Server มักใช้ฮาร์ดแวร์ที่ผ่านการตรวจสอบและมีจำนวนไดรเวอร์ที่ติดตั้งน้อยกว่า ทำให้ Microsoft สามารถควบคุมและทดสอบเรื่องความเข้ากันได้กับ Physical Address ที่เกิน 4GB ได้ง่ายกว่า
Raymond Chen ถึงกับยกตัวอย่างว่า ผู้ดูแล Server คงไม่เอาเครื่อง Scanner ราคาถูกที่ซื้อจากกระบะลดราคาไปเสียบกับ Server ขณะที่ผู้ใช้ตามบ้านมีโอกาสติดตั้งฮาร์ดแวร์และไดรเวอร์แทบทุกอย่างลงเครื่อง

สุดท้ายจึงมาจบที่ Windows 64-bit
การเปลี่ยนมาใช้สถาปัตยกรรม 64-bit เป็นการแก้ปัญหาในระยะยาว เพราะระบบสามารถจัดการ Address Space ที่ใหญ่กว่าเดิมได้โดยตรง และรองรับ RAM จำนวนมากได้โดยไม่ต้องอาศัยวิธีอย่าง PAE เพื่อข้ามกำแพง 4GB แบบระบบ 32-bit
ที่สำคัญ Windows 64-bit ไม่สามารถโหลด Kernel Driver แบบ 32-bit มาใช้ตรง ๆ ได้ ผู้ผลิตฮาร์ดแวร์จึงต้องทำไดรเวอร์ 64-bit ขึ้นมาใหม่ให้ตรงกับสถาปัตยกรรมของระบบ ซึ่งเท่ากับเป็นโอกาสให้ปรับโค้ดและการจัดการ Address ให้รองรับหน่วยความจำขนาดใหญ่ได้อย่างถูกต้องไปด้วย
ส่วนโปรแกรม 32-bit เก่า ๆ Microsoft ก็ไม่ได้ทิ้ง เพราะ Windows 64-bit มีระบบ WoW64 ซึ่งเป็น Compatibility Layer ที่ช่วยให้โปรแกรม 32-bit ยังคงรันบน Windows 64-bit ได้
มันไม่ได้เป็น VM หรือสร้าง Windows อีกชุดซ้อนอยู่ข้างใน โปรแกรมยังทำงานบน CPU และ Kernel ของเครื่องจริง เพียงแต่มีชั้นกลางคอยจัดการความแตกต่างระหว่างโปรแกรม 32-bit กับระบบ 64-bit
อย่างไรก็ตาม WoW64 ใช้สำหรับโปรแกรมใน User Mode ไม่ได้เอาไว้แปลง Kernel Driver 32-bit ให้ทำงานบน Kernel 64-bit ดังนั้นไดรเวอร์จึงยังต้องเป็นเวอร์ชัน 64-bit โดยตรง
สรุปแล้ว Windows 32-bit ไม่ได้ถูกจำกัด RAM ไว้ที่ 4GB เพราะ CPU “ไปต่อไม่ได้” เพียงอย่างเดียว เพราะเทคโนโลยี PAE สามารถทำให้ระบบเข้าถึง Physical RAM เกิน 4GB ได้มานานแล้ว และ Windows Server แบบ 32-bit บางรุ่นก็เคยใช้งานความสามารถนี้จริง
สาเหตุสำคัญที่ Microsoft จำกัด Windows ฝั่งผู้ใช้ทั่วไปเอาไว้ที่ 4GB คือเรื่องความเข้ากันได้ โดยเฉพาะไดรเวอร์รุ่นเก่าที่อาจจัดการ Physical Address เหนือ 4GB ไม่ถูกต้อง จนนำไปสู่ Memory Corruption เครื่องค้าง หรือจอฟ้า
สุดท้ายการย้ายเข้าสู่ยุค 64-bit จึงเป็นทางออกที่เหมาะสมกว่า เพราะได้ทั้ง Address Space ที่ใหญ่ขึ้น รองรับ RAM ได้มากขึ้น และบังคับให้ระบบไดรเวอร์ก้าวตามสถาปัตยกรรมใหม่ไปพร้อมกัน
ส่วนในปัจจุบันเรื่องนี้แทบกลายเป็นประวัติศาสตร์ไปแล้ว หลัง Microsoft หยุดผลักดันเครื่อง Windows แบบ 32-bit มาตั้งแต่ปี 2020 และ Windows 11 ก็ไม่มี Windows เวอร์ชัน x86 32-bit สำหรับพีซีอีกต่อไป
ที่มา : windowslatest

21 hours ago
2







English (US) ·