พอดีว่า ได้โอกาสทดสอบ Ubuntu ตัว 64bit และได้เห็นข้อแตกต่างระหว่าง Version 32bit และ 64bit
เลยนำมาเล่าสู่กันฟัง
ก่อนอื่นต้องปูพื้นฐานก่อนว่า 32bit และ 64bit คืออะไร
32bit และ 64bit คือ ขนาดความกว้างของ register , address bus และ data bus บน CPU
อธิบายละเอียดไปก็ปวดหัวเปล่า ๆ เรามาดูความแตกต่างระหว่าง 32bit และ 64bit กันดีกว่า
สิ่งที่เห็นได้ชัดเจนที่สุดในตอนนี้ก็คือเรื่องของการอ้างอิง Memory
CPU 32bit นั้น จะสามารถอ้างอิง Memory ได้สูงสุด 4GB
4GB มาจากไหน?
4GB ก็มาจาก 232 = 4,294,967,296 bytes =~ 4GBytes
แล้ว CPU 64bit ล่ะ จะสามารถอ้างอิง Memory ได้สูงสุดเท่าไหร่
ก็จะได้ว่า 264 = 18,446,744,073,709,551,616 bytes
ประมาณ 17,000 ล้านจิ๊ก (โอ้ววววว)
อันนี้จะเห็นความแตกต่างได้อย่างชัดเจน
แต่ไม่ได้หมายความว่า CPU 64bit จะมีความเร็วมากกว่า 32bit เพราะความเร็วนั้นวัดกันที่ MHz, GHz ไม่ได้วัดกันที่ Bit
แต่ความหนาแน่นหรือปริมาณของข้อมูลในการคำนวณนั้น มีได้มากขึ้น
ทำให้ CPU 64bit มีความได้เปรียบในการทำงานที่มีปริมาณข้อมูลมาก ๆ เช่น การประมวลผลกราฟฟิก 3D , การประมวลผลฐานข้อมูล, การประมวลผลระบบเครือข่ายขนาดใหญ่ ทั้งนี้ Software นั้นจะต้องรองรับการทำงานที่ 64bit ด้วยเช่นกัน
ยกตัวอย่างเช่น
การประมวลผลกราฟฟิค การประมวลผลที่ 64bit จะทำให้เห็นรายละเอียดของกราฟฟิคได้เพิ่มขึ้น เล่น แสงเงาสมจริงมากขึ้น
เปรียบเสมือนเราดูหนังเรื่องนึง
CPU 32bit เปรียบเสมือน VCD
CPU 64bit เปรียบเสมือน DVD
ถ้าเอา VCD มาเปิดใน CPU 64bit ไม่ได้หมายความว่าภาพจะเร็วขึ้น หรือหนังจะจบเร็วขึ้น
ความเร็วในการประมวลผลเท่ากัน ความยาวของหนังเท่ากัน แต่ความละเอียดหรือปริมาณข้อมูลของ 64bit จะได้มากกว่า
หรืออาจจะเปรียบได้กับรถบรรทุก 10 ล้อ กับรถบรรทุกพ่วง 18 ล้อ
ที่วิ่งความเร็ว 60 กิโลเมตร/ชั่วโมงเท่ากัน ปริมาณการขนส่งมากกว่า แต่ความเร็วก็เท่ากัน
และอีกอย่างหนึ่งที่เห็นได้ชัดเจน การอ้างอิงตัวแปรแบบ long integer
ปกติตัวแปรแบบ long integer ในระบบ 32bit นั้น จะสามารถอ้างอิงได้ไม่เกิน 4,294,967,295
แต่ในระบบ 64bit นั้น สามารถรองรับได้สูงขึ้นถึง 18,446,744,073,709,551,615
ตัวอย่างที่เห็นได้ชัดเจน เช่น
counter ในตัว interface ยกตัวอย่างเช่น ทำการใช้คำสั่ง ifconfig ใน interface
ระบบ 32 bit จะได้
eth1 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
...
RX packets:16123408 errors:0 dropped:0 overruns:0 frame:0
TX packets:16449013 errors:0 dropped:0 overruns:0 carrier:0
RX bytes:3262428467 (3.0 GB) TX bytes:1370388935 (1.2 GB)
ถ้าเป็นระบบ 64bit จะได้
eth1 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
...
RX packets:531824891 errors:0 dropped:0 overruns:0 frame:0
TX packets:643153506 errors:0 dropped:0 overruns:0 carrier:0
RX bytes:69288163048 (64.5 GB) TX bytes:446804408270 (416.1 GB)
จะเห็นว่าข้อมูล RX bytes/TX bytes ในระบบ 32bit จะไม่สามารถแสดงได้เกินกว่าค่า longint
สำหรับผู้ที่วางระบบ ก็ลองนำไปศึกษาต่อยอดกันดูนะครับ