Monday, January 7, 2013

ความแตกต่างระหว่าง Windows 64bit กับ 32bit กับซีพียู 64บิต และ 32 บิต


เนื้อหาตอนนี้ ยังไม่เกียวกับ coding โดยตรงนะขรับ แต่เป็นเรื่องราวที่ข้ากระผมและเพื่อนๆ เจอมาระหว่างไปซื้อคอมพิวเตอร์บ้าง อ่านเจอบ้าง หรือฟังจากทีวีบ้าง ซึ่งบ้างครั้งก็ถูกบ้างก็ผิด เลยเอามาเขียนเป็น article ซะเลย

หลายๆ คนมักจะมีคำถามเกียวกับ Windows 32bit กับ 64bit ว่าต่างกันอยากไร บ้างก็ได้รับคำตอบจากพนักงานขายคอมพิวเตอร์ หรือจากทางเวปบอร์ดต่างๆ ซึ่งก็ถูกบ้างไม่ถูกบ้าง อธิบายได้คร่าวๆ ได้ดังนี้ขรับ

1. ทำไมถึงมี Windows 64 bit, เนื่องจากปัจจุบัน โปรแกรมและเกม เริ่มมีการใช้หน่วยความจำมากขึ้น ซึ่งระบบปฏิบัตการ 32bit นั้นสามารถเข้าถึงหน่วยความจำได้สูงสุดเพียง 4GB เท่านั้น (2 ยกกำลัง 32) ซึ่งแต่ละโปรแกรม ซึ่งรวมถึงเกมด้วย จะสามารถใช้หน่วยความจำได้สูงสุดเพียง 2 GB เท่านั้น แต่ Windows 64bit จะสามารถใช้ได้ถึง 8TB ในสถาปัตยกรรม x64 และ 7TB ในสถาปัตกรรม Itanium ซึ่งจะอธิบายเพิ่มในหัวข้อถัดๆ ไป
ย้อนไปในสมัยอดีต Windows 3.11(16 bit), Windows NT3.1(32 bit) เครื่องคอมพิวเตอร์มี RAM ประมาณ 8MB, การที่แต่ละโปรแกรม สามารถใช้หน่วยความจำถึง 2 GB ถือว่ามากเกินพอ แต่ในสมัยปัจจุบัน 2 GB ก็เหมือนจะไม่พอในบางโปรแกรม ซึ่งทางออกก็คือ ทาง CPU ก็ต้องขยายบัสเพิ่มขึ้น เพือทำให้สามารถเข้าถึง RAM ได้มากขึ้น และทางระบบปฏิบัตการ ก็จำเป็นต้องขยายการเข้าถึงในส่วนนี้ด้วยเช่นกัน

นั้นหมายความว่า เครื่องที่จะติดตั้งระบบปฏิบัตการ 64 bit ได้ จะต้องมี Processor 64 bit เช่น Core2Duo, core i3,5,7 เป็นต้น

2. Windows 32 bit สามารถเข้าถึง หน่วยความจำได้ 4GB นั้นก็คือ 2 ยกกำลัง 32 จะเท่ากับ 4,294,967,296 bytes ซึ่งก็เท่ากับ 4 GB นั้นเอง ซึ่งตามปกติ Windows จะแบ่งเป็น
  1. Kernel mode 2 Gb - ส่วนของระบบปฏิบัตการ และ driver
  2. User mode 2 GB  - สำหรับโปรแกรมหรือเกม ที่ไม่เกียวกับระบบปฏิบัตการ
แต่หน่วยความจำ 4 GB นี้หมายถึง Virtual memory นะขรับ ไม่ได้หมายถึง RAM ซึ่ง Virtual memory นี้จะประกอบด้วยสองส่วนคือ
1. RAM
2. Page file ซึ่งอยู่ใน Hard-disk เรานั้นเอง
นั้นหมายความว่า เราเครื่องเรา มี RAM ตำกว่า 4 GB ควรจะลง 32bit เกิน 4GB ลง 64bit นี้ไม่ใช่นะครับ มี RAM เท่าไหร่ก็สามารถลง 64bit ได้ ต่อเมือ CPU เราเป็นสถาปัตยกรรมแบบ 64bit ทาง Windows แนะนำขั้นต่ำที่ 2 GB (http://windows.microsoft.com/systemrequirements)

3. Windows 64 bit สามารถเข้าถึงหน่วยความจำได้สูงสุด 16 TB ซึ่งจะสังเกตได้ว่า 2 ยกกำลัง 64 จะได้ 16EB (exabytes) ซึ่งมากกว่า 8 TB มาก แต่ปัจจุบันสถาปัตยกรรม x64 ที่เราใช้ๆ กันอยู่ สนับสนุน Virtual add space ที่ 48 bits ซึ่งเท่ากับ 256 TB แต่ Windows 64bit จะสนับสนุนเพียง 44 bits ซึ่งก็คือ 16 TB ซึ่ง Windows จะแบ่งเป็น
  1. Kernel mode 8 TB
  2. User Mode 8 TB
ซึ่งจะเห็นว่า ได้เพิ่มจากแบบ 32 bit มากมายเด้อขรับ แต่ไม่ได้หมายความว่า รองรับได้ไม่จำกัดเหมือนบางคนเข้าใจเด้อขรับ

4. Application 32 bit จะสามารถติดตั้งลง Windows 64 bits ได้หรือไม่ คำตอบคือได้ 100% ขรับ(ยกเว้นตัวที่ใช้ Hardware หรือหน่วยความจำโดยตรงโดยไม่ผ่าน OS) และที่ดีไปกว่านั้น ซึ่งก็คือมันสนับสนุน WOW 64 (Windows on Windows) ซึ่งจะเห็นได้ ตามโฆษณา CPU ของทั้ง intel และ AMD ซึ่งข้อดีขอมมันก็คือเอาไว้ host application 32bit และ application ที่ถูก host โดย WOW64 สามารถใช้หน่วยความจำได้เต็มที่ของ 32 bit ซึ่งก็คือ 4GB เต็ม เนื่องจากไม่ต้องมีการแบ่งส่วน 2 GB เดิมไปให้ kernel

5. นอกจากนี้ ขนาดของ Register ใน CPU จะมีขนาดต่างกันด้วย เป็นเหตุให้ driver ของ 32 บิต กะ 64 บิต ใช้ด้วยกันบ่ได๋

ความจริงมีเรื่องอื่นๆ ที่แตกต่างกันอยู่อีก ทั้งเกียวกับ coding และไม่เกี่ยว เอาไว้ต่อกันตอนหน้าเด้อขรับเด้อ



No comments:

Post a Comment