วันอาทิตย์ที่ 28 สิงหาคม พ.ศ. 2554

Google Map Api

Google Map Api 

เข้าใช้แผนที่ออนไลน์ผ่านเว็บ   http://maps.google.com/
      Google Apps จะแบ่งออกเป็น 3 เวอร์ชัน 

      หนึ่งคือ Google Apps Standard Edition เป็นบริการฟรีสำหรับธุรกิจ กลุ่มชมรมและองค์กร หรือการใช้งานในครอบครัว 

      สองคือ Google Apps Premier Edition คิดค่าบริการ 50 เหรียญสหรัฐฯ ต่อปี เหมาะสำหรับธุรกิจทุกประเภท พร้อมมีบริการช่วยเหลือทางโทรศัพท์ ให้พื้นที่สำหรับจัดเก็บอีเมลสูงถึง 10 กิกะไบต์ และมี API พร้อมสำหรับเชื่อมต่อ
      สามคือ Google Apps Education Edition ใช้งานฟรีสำหรับโรงเรียน มหาวิทยาลัยและสถาบันการศึกษา พร้อมด้วยฟังก์ชันต่างๆ ครบถ้วนทั้งด้านการช่วยเหลือ การจัดเก็บข้อมูล และ API สำหรับงานพัฒนาต่อยอด
      

Google Maps API ช่วยให้เราสามารถพัฒนาโปรแกรมเพื่อแทรก Google Maps เข้าไปเป็นองค์ประกอบส่วนหนึ่งในเว็บเพจที่ต้องการได้โดยเขียนเป็นรหัส html และ javascript ในรูปแบบที่ไม่สลับซับซ้อนนักสำหรับงานแผนที่ง่ายๆ Google Maps API มีขีดความสามารถกว้างขวางเน้นในด้านการนำเสนอข้อมูลแผนที่ในลักษณะหมุดปัก (Push pin / Place marker) ซึ่งสามารถกำหนดให้แสดงข้อมูลประกอบแผนที่เมื่อผู้ใช้คลิกที่ตัว push pin /marker นั้นๆ หรือองค์แผนที่แบบเส้น (Polyline) พื้นที่ (Polygon) และภาพ (Ground overlay)  บริการด้านแผนที่ของ Google นี้เริ่มต้นตั้งแต่กลางปีคศ. 2005 เป็นบริการฟรี จัดให้แก่ผู้ใช้ทั่วโลกโดยคาดหวังที่จะใช้การโฆษณาบนแผนที่เป็นรายได้กลับ คืนแต่ในระยะแรกจะยังไม่มีการโฆษณาดังกล่าว ในการจัดบริการแผนที่นี้ ส่วนประกอบพื้นฐานสำคัญที่ดึงดูดใจให้มีผู้ใช้งานแผนที่ของกูเกิ้ลเป็นอย่าง มากคือแผนที่และภาพถ่ายดาวเทียมคุณภาพดีซึ่งครอบคลุมทั่วพื้นผิวโลกในมาตรา ส่วนต่างๆ ตามความเหมาะสม ทำให้การพัฒนาต่อยอดจากสิ่งที่กูเกิ้ลจัดไว้ให้แล้วเป็นงานที่น่าสนใจ ไม่ต้องลงทุนจัดหาทรัพยากรที่หายากและราคาแพงเองมาใช้ในโครงการอย่างที่เคย เป็นในอดีต
เนื่องจากจัดทำ Google Maps API เป็นโปรแกรมรหัสเปิด (Open source program) ในภาษาจาวาสคริปต์ จึงทำให้ผู้ใช้ที่เป็นนักพัฒนาโปรแกรมสามารถเข้าไปดูรายละเอียดของรหัส โปรแกรมได้สะดวก รวมทั้งสามารถปรับเปลี่ยนแก้ไขโปรแกรมได้ ทำให้ Google Maps API มีผู้ใช้กันอย่างกว้างขวาง เหตุผลสำคัญอีก 2 อย่างที่ส่งเสริมให้มีผู้ใช้มากคือแผนที่และภาพถ่ายดาวเทียมคุณภาพดีที่ใช้ สนับสนุนการทำแผนที่มีให้ครอบคลุมพื้นที่ต่างๆ อย่างกว้างขวาง และชื่อเสียงของโปรแกรม Google Earth เสริมด้วยบริการ Google Local ที่มีมาก่อน
บทความนี้จะกล่าวถึงการใช้ Google Maps API ทำโปรแกรมประเภทที่เรียกว่า Map mashup อย่างง่ายเพื่อเป็นตัวอย่างให้ผู้สนใจได้ทำขึ้นเพื่อเริ่มต้นทดลองใช้งาน หรือเรียนรู้ทำความเข้าใจในเทคโนโลยีและขีดความสามารถของ Google Maps API
Google Maps mashup
คำว่า “mashup” หรือ "mash-up" เป็นศัพท์เฉพาะในแวดวงของนักพัฒนา application แบบ client-server ประเภทที่ทำเติมต่อขึ้นเองโดยใช้software tool และ ทรัพยากรที่ทางผู้ให้บริการจัดไว้ให้ เป็นคำใหม่ที่ใช้กันหนาหูในปี 2005 มีที่มาจากวงการเพลงเมื่อนักจัดรายการเพลงเกิดความคิดแหวกแนวโดยทดลองเปิด เพลง 2 เพลงพร้อมๆกัน ทำให้เกิดเสียงเพลงที่ผสมผสานที่แปลก และบางครั้งมีความไพเราะ และเรียกขานผลที่เกิดขึ้นว่า “mashup”
mashup ที่กล่าวถึงกันมากในแวดวงนักพัฒนาแอพลิเคชันที่ใช้บนอินเตอร์เน็ตมีองค์ ประกอบอย่างน้อย 2 ส่วน ส่วนแรกคือ application program interface (API) และทรัพยากรสนับสนุนจากเซิร์ฟเวอร์ของผู้ให้บริการ และส่วนที่ 2 คือโปรแกรมและทรัพยากรของผู้พัฒนาแอพลิเคชันนั้น (ติดตั้งอยู่ที่เว็บไซท์ของผู้พัฒนา) ต้วอย่างกรณีของ Google Maps mashup ก็จะหมายถึงเว็บเพจที่นักพัฒนาเว็บไซท์สร้างขึ้นให้มีส่วนประกอบที่เป็น แผนที่ที่สามารถทำงานแบบโต้ตอบกับผู้ใช้ได้ โดยมีแผนที่ฐานเป็นส่วนที่ Google จัดไว้ให้แล้ว และมีข้อมูลแผนที่ของตนเองซ้อนทับในลักษณะหมุดปัก (ที่สามารถแสดงข้อความซึ่งแฝงอยู่เมื่อผู้ใช้คลิกที่หมุดเหล่านั้น) หรือลักษณะอื่นที่สลับซับซ้อนกว่านั้น
ความรู้ความชำนาญที่ควรมีในผู้ใช้ Google Maps API
ในการจัดทำ Google Maps mashup ระดับต้นจำเป็นต้องใช้ความรู้พื้นฐานในการสร้าง web page ดัวยภาษา html/ xhtml การเขียนโปรแกรม javascript ความรู้เรื่องการแผนที่และภูมิศาสตร์ และ ความรู้ในด้าน xml technology ในระดับปฏิบัติการที่สูงขึ้นมีความต้องการที่สลับซับซ้อนมากขึ้นตามลำดับ

ในที่นี้ขอกล่าวโดยสรุปเกี่ยวกับความรู้พื้นฐานเบื้องต้นที่จำเป็นในงานพัฒนา Google Maps mashup ซึ่งควรมี ดังนี้
1. html/ xhtml
2. javascript
3. ความรู้พื้นฐานวิชาภูมิศาสตร์ และการแผนที่

ความรู้เพิ่มเติมที่จำเป็นสำหรับงานพัฒนาขั้นกลาง-สูง
1. XML technology
2. AJAX (javascript + xml)
3. JSON (JavaScript Object Notation)

ความรู้เพิ่มเติมสำหรับงานใหญ่ งานพิเศษ
1. Server side scripting (PHP, etc)
2. Web database software (MySql, etc)

ความรู้อื่นที่เกี่ยวข้อง มีทั้งที่เป็นเรื่องกราฟิก แผนที่ และ อื่นๆ
1. Web map service (WMS) concept
2. SVG (Scalable Vector Graphic)
3. GML (Geographic Markup Language)
4. GIS, GPS, Cartography
5. etcs.
ขั้นตอนหลักในการดำเนินการจัดทำ Google Maps mashup
1. ยื่นคำขอ API Key สำหรับ URL ของเว็บไซต์ที่จะใช้บริการ Google Maps API  เว็บไซต์นั้นเป็นที่ที่เราจะนำเว็บเพจที่มี Google Maps เป็นองค์ประกอบไปวางไว้
(URL ที่ยื่นคำขอรับ API Key:- http://www.google.com/apis/maps/signup.html)
2. เขียนโปรแกรมสร้างเว็บเพจที่ใช้ Google Maps API ช่วยสร้างแผนที่
(แหล่งเอกสารอ้างอิง:- http://www.google.com/apis/maps/documentation/reference.html)
3. Upload งานที่ทำเสร็จแล้วขึ้นสู่เว็บไซท์ และทดลองใช้งาน

คู่มือผู้ใช้ Google Maps

ทำความรู้จักกับ Google แผนที่

แผนผังด้านล่างนี้อธิบายคุณลักษณะบางอย่างที่มีใน Google แผนที่ ซึ่งตำแหน่งของคุณอาจไม่สามารถใช้งานคุณลักษณะบางอย่างได้
ภาพรวมของ Google แผนที่
  1. ขอรับเส้นทาง - หากต้องการไปไหนสักที่ คลิกเพื่อหาเส้นทางสำหรับการขับขี่รถยนต์ จักรยาน เดินเท้า ไปจนถึงการใช้บริการขนส่งมวลชน
  2. สถานที่ของฉัน - สร้างแผนที่ที่กำหนดเองในแบบของคุณ ดูตำแหน่งที่ติดดาว และธุรกิจที่คุณเคยแสดงความเห็นไว้
  3. ค้นหาแผนที่ - ค้นหาสถานที่ ธุรกิจ ทางแยก ที่อยู่ และอื่นๆ อีกมากมาย บน Google แผนที่
  4. แสดง/ซ่อน - คลิกลูกศรซ้าย (<<) เพื่อซ่อนแผงด้านซ้าย และคลิกลูกศรขวา (>>) เพื่อแสดงแผงดังกล่าว
  5. เลเยอร์ - เลื่อนเมาส์ไปเหนือวิดเจ็ตทางมุมขวาของแผนที่ เพื่อดูเลเยอร์ที่สามารถใช้งานในตำแหน่งของคุณได้ เช่น การจราจร, ภาพถ่าย, Google Buzz, และอื่นๆ เรียนรู้เพิ่มเติมเกี่ยวกับเลเยอร์ทั้งหมดที่สามารถใช้งานได้ใน Google แผนที่
  6. พิมพ์/ส่ง - พิมพ์แผนที่ออกมา หรือส่งแผนที่ให้กับคนอื่น
  7. ลิงก์มาที่หน้านี้ - สร้างที่อยู่เว็บ (URL) สำหรับแผนที่ของคุณที่สามารถนำไปแบ่งปันร่วมกับผู้อื่นได้โดยง่าย
  8. ผลการค้นหา - คุณสามารถดูผลการค้นหาของคุณได้ในแผงทางด้านซ้าย คลิกที่ผลการค้นหาใดก็ได้ที่คุณต้องการเพื่อดูข้อมูลเพิ่มเติม
  9. ควบคุมการเลื่อนแผนที่ - ใช้ปุ่มลูกศรขึ้น ลง ซ้าย และขวา เพื่อเคลื่อนที่ไปรอบๆ แผนที่ หรือใช้แถบเลื่อนการย่อ/ขยาย เพื่อย่อและขยายเข้าออกตามตำแหน่งต่างๆ บนแผนที่
  10. แผนที่ - บริเวณแผนที่จะแสดงตำแหน่งทางภูมิศาสตร์พร้อมผลการค้นหาที่เกี่ยวข้อง สถานที่ของฉัน และข้อมูลอื่นๆ เกี่ยวกับพื้นที่บริเวณนั้น
  11. Street View - ลากเพ็กแมนสีเหลืองจากส่วนควบคุมการย่อ/ขยายไปยังตำแหน่งบนแผนที่ เพื่อดูและสำรวจในภาพระดับถนน
  12. หน้าต่างข้อมูล - เมื่อคุณคลิกที่หมุดสีแดง หรือที่ผลการค้นหา จะปรากฏหน้าต่างข้อมูลขึ้นมาซึ่งจะแสดงข้อมูลเพิ่มเติมเกี่ยวกับสถานที่นั้น
  13. มุมมอง - สลับระหว่างมุมมองแผนที่ ดาวเทียม และ Earth

การใช้แผนที่ภาพรวม

แผนที่ภาพรวม แผนที่ภาพรวม (แสดงทางซ้ายนี้) ปรากฏที่มุมล่างขวาของแผนที่ แผนที่นี้ช่วยให้คุณสามารถทราบทิศทาง โดยแสดงตำแหน่งของแผนที่ปัจจุบันในบริบทของพื้นที่ทางภูมิศาสตร์ที่มีขนาด ใหญ่ขึ้น พื้นที่ซึ่งแสดงในแผนที่ปัจจุบันจะเป็นช่องสีม่วงในแผนที่ภาพรวม คุณสามารถคลิกปุ่มซ่อนแผนที่ภาพรวม เพื่อซ่อนแผนที่ภาพรวม หรือคลิกปุ่มแสดงแผนที่ภาพรวม เพื่อแสดงแผนที่ภาพรวมอีกครั้งได้ตลอดเวลา
เมื่อคุณกวาดดูหรือขยายแผนที่ มุมมองของแผนที่ภาพรวมจะเปลี่ยนไปตามกัน คุณสามารถเปลี่ยนมุมมองที่มีอยู่ในแผนที่ได้โดยทำสิ่งใดสิ่งหนึ่งต่อไปนี้:
  • ลากและวางช่องสีม่วงในแผนที่ภาพรวม
  • ลากและวางพื้นที่ภายนอกช่องสีม่วงเพื่อกวาดดูแผนที่

เกี่ยวกับแผงด้านซ้าย

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

การเลือกตำแหน่งเริ่มต้น

มุมมองเริ่มต้นที่ Google แผนที่แสดงนั้นกำหนดจากตำแหน่งของคุณ อย่างไรก็ตาม หากคุณต้องการใช้ตำแหน่งอื่น ให้ป้อนที่อยู่ที่เหมาะสมในช่องค้นหาและคลิก ค้นหาแผนที่ คุณยังสามารถใช้สถานที่ที่คุณบันทึกไว้ได้อีกด้วย เมื่อที่อยู่ของคุณปรากฏ ให้คลิก ทำให้ที่นี่เป็นตำแหน่งเริ่มต้นของฉัน ในหน้าต่างข้อมูล ที่อยู่นี้ปรากฏเป็นตำแหน่งเริ่มต้นของคุณแล้ว

วิธีการใช้งานแผนที่ (Google Maps)

AtSiam (แอทสยาม) ใช้แผนที่ของ Google maps เพื่อแสดงว่าแต่ล่ะโรงแรมนั้นตั้งอยู่ที่ใด และด้วยความสามารถของ Google maps ในแอทสยามคุณสามารถ:
  • ระบุที่ตั้งของโรงแรมได้เที่ยงตรงมากขึ้นในสัดส่วนที่ถูกต้อง
  • ค้นหาโรงแรมที่อยู่ใกล้เคียง
  • ตรวจสอบเส้นทางจากสนามบินหรือสถานที่อื่นๆ (แม้แต่ที่อยู่ของคุณเอง) ไปยังโรงแรม

มุมมองหลักของแผนที่

  • แผนที่
    แสดงเส้นทาง ถนน แม่น้ำ เส้นแบ่งเขต ชื่อ จังหวัด อำเภอ ตำบล หมู่บ้าน ฯลฯ เหมาะสำหรับดูเส้นทางขับรถ หมายเลขทางหลวง ภาพรวมของแผนที่ทั้งหมด
  • ดาวเทียม
    แสดงภาพถ่ายทางอากาศ เหมาะสำหรับดูภาพสถานที่จริงระยะใกล้ เช่น ตัวเมือง ตลาด จุดสนใจสำคัญๆ เพื่อหาตำแหน่งที่ถูกต้อง

    หมายเหตุ
    บางตำแหน่งจะไม่สามารถขยายได้ในระยะใกล้ได้ และข้อมูลภาพถ่ายดาวเทียมอาจจะไม่ใช่ภาพปัจจุบันแต่เป็นภาพที่ถ่ายมาแล้ว 1-3 ปี
  • แบบผสม
    แสดงแผนที่ในมุมมองแผนที่และภาพถ่ายทางอากาศรวมกัน
  • พื้นดิน
    แสดงพื้นที่ในมุมมอง 3 มิติ (ต้องติดตั้ง Google Earth)

มุมมองอื่นๆ ของแผนที่


  • รูปภาพ
  • วีดีโอ
  • วิกิพีเดีย
  • เว็บแคม
  • การจราจร (เฉพาะกรุงเทพฯ)

หมุด (Marker) ต่างๆ ที่ใช้เฉพาะในแอทสยาม

 สถานที่
 พื้นที่
 ได้รับความที่นิยม
 โรงแรม
 โรงแรมที่มีโปรโมชั่น
 โรงแรมปัจจุบัน
 สนามบิน

ข้อแนะนำในการใช้งานแผนที่

แผนที่ในแอทสยามถูกแบ่งออกเป็น 4 ระดับดังนี้
  1. แผนที่ระดับประเทศไทย (ตัวอย่าง)
    แผนที่ระดับนี้ หมุดที่ปักจะแทนสถานที่หลักๆ ในประเทศไทย เช่น กรุงเทพฯ, ภูเก็ต เมื่อคลิกที่หมุดระบบก็จะแสดงรายละเอียดคร่าวๆ ของพื้นที่นั้นดังรูป
       
  2. แผนที่ระดับสถานที่ (ตัวอย่าง)
    แผนที่ระดับนี้ หมุดที่ปักจะแทนพื้นที่ที่อยู่ในสถานที่นั้นๆ เช่น ถ้าสถานที่เป็น กรุงเทพฯ หมุดที่ปักไว้ก็จะแสดงพื้นที่ เช่น สุขุมวิท, สีลม หรือ ดอนเมือง เป็นต้น เมื่อคลิกที่หมุดระบบก็จะแสดงรายละเอียดคร่าวๆ ของพื้นที่
  3. แผนที่ระดับพื้นที่ (ตัวอย่าง)
    แผนที่ระดับนี้ หมุดที่ปักจะแทนโรงแรมแต่ละโรงแรมที่อยู่ในพื้นที่นั้นๆ เมื่อคลิกที่หมุด ระบบจะแสดงรายละเอียดคร่าวๆ ของโรงแรม



    ท่านยังสามารถตรวจสอบเส้นทางจากสนามบินในพื้นที่โดยเช็คที่ช่องตามภาพด้านล่าง

     
  4. แผนที่ระดับโรงแรม (ตัวอย่าง)
    ในเบื้องต้นระบบจะแสดงหมุดของโรงแรมนั้นๆ เพียงโรงแรมเดียวเพื่อให้ง่ายต่อการตรวจสอบที่ตั้งและเส้นทาง ถ้าต้องการให้แสดงโรงแรมอื่นๆ ที่อยู่ในพื้นที่เดียวกันก็สามารถทำได้โดยการเช็คที่ช่อง "แสดงโรงแรมใกล้เคียง"


    นอกจากนั้นยังสามารถตรวจสอบเส้นทางจากตำแหน่งใดๆ ก็ได้โดยค้นหาจากช่อง "แนะนำเส้นทาง"


    เมื่อกำหนดจุดแล้วจะได้เส้นทางบนแผนที่พร้อมคำอธิบายดังรูป
    ตัวควบคุมทิศทาง ตัวควบคุมทิศทางที่คุณเห็นที่ maps.google.co.th จะปรากฏอยู่ทางด้านซ้าย ตัวควบคุมทิศทางประกอบด้วย:
    1. ลูกศร - คลิกปุ่มลูกศรที่เหมาะสมเพื่อเลื่อนภาพไปยังทิศเหนือ ทิศใต้ ทิศตะวันออก หรือทิศตะวันตก
    2. Street View - คลิกเพื่อดูภาพระดับถนน
    3. ซูม - คลิก + เพื่อขยายภาพที่ตำแหน่งกึ่งกลางของแผนที่ คลิก - เพื่อย่อภาพ
    4. แถบย่อ/ขยาย - ลากแถบย่อ/ขยายขึ้นหรือลงเพื่อเพิ่มปริมาณการย่อหรือขยาย
    อื่นๆ หน้าเว็บที่มี Google แผนที่รวมอยู่อาจไม่มีตัวควบคุมทิศทางครบทั้งหมด ตัวอย่างเช่้น แผนที่ที่รวมอยู่อาจแสดงตัวควบคุมทิศทางที่มีลักษณะดังต่อไปนี้:
    spacerตัวควบคุมทิศทางขนาดเล็ก      ตัวควบคุมทิศทางขนาดเล็ก

การนำทางไปยังที่ต่างๆ ใน Google แผนที่

คุณสามารถควบคุมทิศทาง (เลื่อนภาพของคุณ) ได้แบบสองมิติใน Google แผนที่ หากต้องการกวาดดู (เลื่อนแผนที่) ให้ทำอย่างใดอย่างหนึ่งต่อไปนี้:
  • คลิกและลากแผนที่
  • กดลูกศรชี้ขึ้นบนแป้นพิมพ์ของคุณเพื่อเลื่อนไปทางทิศเหนือ
  • กดลูกศรชี้ลงบนแป้นพิมพ์ของคุณเพื่อเลื่อนไปทางทิศใต้
  • กดลูกศรชี้ทางขวาบนแป้นพิมพ์ของคุณเพื่อเลื่อนไปทางทิศตะวันออก
  • กดลูกศรชี้ทางซ้ายบนแป้นพิมพ์ของคุณเพื่อเลื่อนไปทางทิศตะวันตก
นอกจากนั้น คุณยังสามารถย่อหรือขยายภาพได้โดยการกดปุ่ม + หรือ - เลื่อน เคอร์เซอร์ให้อยู่เหนือตำแหน่งใดตำแหน่งหนึ่ง และใช้ปุ่มเลื่อนของเมาส์เพื่อขยาย หรือย่อการแสดงภาพที่ตำแหน่งนั้น หากต้องการตั้งตำแหน่งใดตำแหน่งหนึ่งเป็นจุดศูนย์กลางและขยายภาพ ให้ดับเบิลคลิกที่ ตำแหน่งนั้น

การใช้ตัวควบคุมทิศทาง

ตัวควบคุมทิศทาง ตัวควบคุมทิศทางที่คุณเห็นที่ maps.google.co.th จะปรากฏอยู่ทางด้านซ้าย ตัวควบคุมทิศทางประกอบด้วย:
  1. ลูกศร - คลิกปุ่มลูกศรที่เหมาะสมเพื่อเลื่อนภาพไปยังทิศเหนือ ทิศใต้ ทิศตะวันออก หรือทิศตะวันตก
  2. Street View - คลิกเพื่อดูภาพระดับถนน
  3. ซูม - คลิก + เพื่อขยายภาพที่ตำแหน่งกึ่งกลางของแผนที่ คลิก - เพื่อย่อภาพ
  4. แถบย่อ/ขยาย - ลากแถบย่อ/ขยายขึ้นหรือลงเพื่อเพิ่มปริมาณการย่อหรือขยาย
อื่นๆ หน้าเว็บที่มี Google แผนที่รวมอยู่อาจไม่มีตัวควบคุมทิศทางครบทั้งหมด ตัวอย่างเช่้น แผนที่ที่รวมอยู่อาจแสดงตัวควบคุมทิศทางที่มีลักษณะดังต่อไปนี้:
spacerตัวควบคุมทิศทางขนาดเล็ก      ตัวควบคุมทิศทางขนาดเล็ก

เครื่องหมายและหน้าต่างข้อมูล

เกี่ยวกับเครื่องหมาย

เครื่องหมายจะปรากฏใน Google แผนที่ เพื่อแสดงถึงตำแหน่งที่สำคัญ ตัวอย่างเช่น เมื่อคุณค้นหาที่อยู่ Google แผนที่จะแสดงตำแหน่งของที่อยู่ด้วยเครื่องหมาย ประเภทของเครื่องหมายประกอบด้วย:





















เครื่องหมายโดยประมาณ หลังจากที่คุณค้นหาที่อยู่หรือธุรกิจ เครื่องหมายนี้จะแสดงตำแหน่งโดยประมาณของธุรกิจ
เครื่องหมายของผู้สนับสนุน หลังจากที่คุณค้นหาธุรกิจ เครื่องหมายนี้จะแสดงตำแหน่งของธุรกิจของผู้สนับสนุน (โฆษณา)
เครื่องหมายจุดเริ่มต้นเส้นทาง เมื่อคุณขอเส้นทาง เครื่องหมายนี้จะแสดงจุดหมายบนเส้นทางของคุณ
ไอคอนทางออก เครื่องหมายนี้จะแสดงหมายเลขและตำแหน่งของทางออกบนทางหลวง
เครื่องหมายจุดสิ้นสุดเส้นทางการขับขี่ หลังจากที่คุณค้นหาและแสดงเนื้อหาที่สร้างโดยผู้ใช้ เครื่องหมายนี้จะแสดงตำแหน่งของเนื้อหาดังกล่าว (เรียนรู้เพิ่มเติม)
เครื่องหมายขนาดเล็ก หลังจากที่คุณค้นหาที่อยู่หรือธุรกิจ เครื่องหมายเหล่านี้จะแสดงผลการค้นหาทั้งหมดโดยไม่จำกัดเฉพาะผลการค้นหาที่ เกี่ยวข้องมากที่สุด (ซึ่งจะระบุด้วยเครื่องหมายขนาดใหญ่กว่า) โปรดบอกให้เราทราบหากคุณชอบเลเยอร์การค้นหาใหม่นี้
ข้อดี
- สามารถใช้งาน ออนไลน์ผ่านอินเทอร์เน็ตได้โดยไม่ต้องติดตั้งโปรแกรม
- สะดวกรวดเร็วสำหรับการค้นหาเส้นทาง
- หาพิกัดจุดที่ต้องการได้ง่าย

ข้อเสีย
-  ถ้าเข้าใช้ Google Maps ด้วยเบราว์เซอร์ Microsoft Internet Explorer จะเกิดข้อผิดผลาดบ่อย

จุดเด่น
ในปัจจุบัน เราใช้ประโยชน์จากแผนที่ Google Map ได้มากมาย
เช่น การค้นหาสถานที่ต่างๆ และเส้นทางที่จะใช้ในการเดินทาง ค้นหา
สถานที่ใกล้เคียง ในการใช้แผนที่ Google Map เราเลือกดูแผนที่ได้ 4 แบบ คือ
แผนที่ (Map)  แผนที่จากภาพถ่ายดาวเทียม (Sat)  แผนที่แสดง
Terrain (Ter) และแผนที่ Google Earth (Earth)



แอพมี่คล้ายกับ google



Google Blackberry App + Google Maps + Gmail
Top 10 Apps แบ๊ว ของ Blackberry 2010 blackberryรอบ นี้ให้ที 3 Apps เลยครับพี่น้อง ไม่ต้องแอ๊พกันแล้ว ใน 3 ตัวนี้ ที่ผมคิดว่าน่าจะโหลดมากที่สุดก็คือ Google Maps เนี่ยแหละครับ เพราะมันโคตรฉลาดเลย เมื่อเทียบกับ Blackberry Maps กากๆ -_-‘ อีกแล้ว สำหรับการหาแผนที่ในประเทศไทยแล้ว Google Maps for Blackberry ทำออกมาได้เยี่ยมเลยครับ ไม่เท่านั้นคุณยังสามารถ Sync กับ Google Maps บนเว็บได้ด้วย เช่นคุณ Add Star จุดไว้จากในเว็บก่อน แล้วคุณค่อยมาเปิดดูใน App บน Blackberry ตอนเดินทางก็ได้ไม่มีปัญหาเลย
ในตอนนี้มันไปไกล แล้ว สามารถดูสภาพการจราจรได้, สามารถนำทางใกล้ที่สุดได้ (ในกรุงเทพฯแม่นนะ), ใช้กับ Google Latitude เผื่อดูว่าเพื่อนๆอยู่ตรงไหนได้, ค้นหาด้วยเสียงได้ (ถ้าคิดว่าออกสำเนียงแอ๊พเซ่นอังกฤษแม่นอ่ะนะ555) ฯลฯ เยอะ! ตรงกันข้ามกับ Blackberry Map ที่แค่โหลดแผนที่ก็อืดจนอยากจะปิดแล้ว จบจบจบ! แต่ถ้าเป็นแฟน Google ก็แนะนำให้โหลด Google Mobile Apps ก่อนครับ เพราะว่ามันเชื่อมกับ Google Apps ได้อีกหลายตัว เช่น Google Maps และ Gmail ไอ้ Gmail นี่โหลดมาสำหรับเอาไว้คุ้ยเมล์เก่าๆ ซึ่ง Push Mail ของ Blackberry ทำไม่ได้ แถมตอนนี้ใช้กับ Google Apps บนโดเมนของคุณได้แล้วนะ เช็คได้หลาย Account บน App เดียว

    วันเสาร์ที่ 20 สิงหาคม พ.ศ. 2554

    กราฟฟิกการ์ด หรือการ์ดจอภาพมีผลต่อประสิทธิภาพด้านการแสดงผลอย่างไร

    กราฟฟิกการ์ด หรือการ์ดจอภาพมีผลต่อประสิทธิภาพด้านการแสดงผลอย่างไร
    Graphics Processing unit  (GPU) สามารถเรียกอีกชื่อหนึ่งได้คือ  visual processing unit  (VPU) ซึ่ง GPU หน้าที่หลักของ GPU ก็คือช่วยในการประมวลการทำงานในด้านภาพกราฟฟิกบนหน้าจอคอมพิวเตอร์ให้มี ประสิทธิภาพมากยิ่งขึ้นหลักการทำงานก็คล้ายกับ CPU แต่จะแตกต่างกันตรงที่ การ์ดแสดงผลสมัยเก่า ทำหน้าที่แปลงข้อมูลดิจิตอลเป็นสัญญาณเท่านั้น แต่จากกระแสความนิยมของการ์ดเร่งความเร็วสามมิติ ในช่วงครึ่งหลังของทศวรรษที่ 90 โดยบริษัท 3dfx และ nVidia ทำให้เทคโนโลยีด้านสามมิติพัฒนาไปมาก ปัจจุบันการ์ดแสดงผลสมัยใหม่ ได้รวมความสามารถในการแสดงผลภาพสามมิติมาไว้ เป็นมาตรฐาน และได้เรียกชื่อใหม่ว่า GRAPHICS PROCESSING UNIT โดยสามารถลดงานด้านการแสดงผลของของหน่วยประมวลผลกลาง (CPU) ได้มากมีหน้าที่เปลี่ยนสัญญาณ digital ให้เป็นสัญญาณภาพ โดยมี Chip เป็นตัวหลัก ในการประมวลการแปลงสัญญาณ ส่วนภาพนั้น CPU เป็นผู้ประมวลผล แต่ปัจจุบัน เทคโนโลยีการประมวลผลภาพนั้น VGA card เป็นผู้ประมวลผลเองโดย Chip นั้นได้เปลี่ยนเป็น GPU (Grarphic Processing Unit) ซึ่งจะมีการประมวลภาพในตัว Card เองเลย เทคโนโลยีนี้เป็นที่แพร่หลายมากเนื่องจากราคาเริ่มปรับตัวต่ำลงมาจากเมื่อ ก่อนที่เทคโนโลยีนี้เพิ่งเข้ามาใหม่ๆ โดย GPU ค่าย Nvidia เป็นผู้ริเริ่มการลุยตลาด
    การ์ดจอ (Video Card)
    การ์ด แสดงผล  หรือ กราฟฟิกการ์ด (Graphic card) เป็นแผงวงจรอิเล็กทรอนิกส์ ที่ทำหน้าที่ในการนำข้อมูลที่ได้จากการประมวลผลของซีพียูมาแสดงบนจอภาพ ทำให้ผู้ใช้ สามารถควบคุมการทำงาน ได้อย่างมีประสิทธิภาพ  โดยจอภาพจะเป็นส่วนที่รับข้อมูลจากการ์ดแสดงผลอีกทีหนึ่ง  การ์ดกราฟฟิกทีได้รับความนิยมและใช้กันแพร่หลายในอยู่ปัจจุบัน เป็นการ์ดกราฟฟิกที่มี GPU เป็นตัวประมวลผล




    1. กระบวนการทำงาน
                 การ์ดแสดงผลมีหน้าที่หลักในการรับข้อมูลดิจิตอลมาแปลงเป็นสัญญาณอะนาล็อก เพื่อส่งออกไปแสดงผลยังหน้าจอ ซึ่งสามารถแบ่งการทำงานของการ์ดแสดงผลออกเป็น 2 โหมดคือ โหมดตัวอักษร (Text Mode) โหมดการแสดงผลที่สามารถแสดงได้ เฉพาะข้อความที่เป็นตัวอักษรบนจอภาพ ไม่สามารถแสดงรูปภาพกราฟฟืกต่าง ๆ ได้ หน่วยย่อยที่สุดบนจอภาพในโหมดนี้ คือ ตัวอักษร     เช่น การทำงานในระบบ DOS และ โหมดกราฟฟิก (Graphic Mode) ลักษณะการทำงานแบบกราฟฟิก ในคอมพิวเตอร์ PC ของ IBM ได้แก่ ได้แก่การทำงานที่แสดงออกมาเป็นภาพ เส้นและตัวอักษรบนจอภาพ graphic mode สร้างภาพโดยวิธีใช้จุด pixel แต่ละจุดมาต่อเรียงกันเพื่อสร้างเป็นภาพ เป็นโหมดที่ต้องการความละเอียดในการแสดงผลสูงดังจะเห็นได้จากโหมดการทำงาน ของระบบปฏิบัติการวินโดวส์ที่ใช้อยู่ในปัจจุบัน

    2 - ประเภท

             การ์ด แสดงผลในปัจจุบันถูกพัฒนาให้มีความสามารถมากขึ้น มีการการ์ดเพื่องานเฉพาะด้านหลากหลายชนิด โดยการ์ดเหล่านี้จะมีชิปประมวลผลบนตัวการ์ด เพื่อจะช่วยให้งานประมวลผลทางด้านกราฟฟิก 3 มิติ สามารถทำได้อย่างสมบูรณ์แบบ ด้วยคุณสมบัติที่หลากหลายของการ์ดแสดงผลในปัจจุบัน ทำให้ขอบเบตการใช้งานของมันไม่ได้เพียงใช้เล่นเกมส์ หรือใช้งานด้านเอกสารเท่านั้น   ความสามารถที่มีอยู่ในตัวเครื่องระดับ Workstation ที่ ใช้ในงานด้านกราฟฟิกระดับสูงได้ถูกรวมเอาไว้ในการ์ดแสดงผลด้วย ทำให้ผู้ที่ต้องการใช้งานด้านกราฟฟิกสามารถเลือกใช้ได้ตามความเหมาะสม ทั้งนี้การ์ดแสดงผลสามารถแบ่งประเภทได้ตามลักษณะการใช้งานต่าง ๆ ดังนี้

             2.1.  ใช้ในการเอกสารทั่วไปและอินเตอร์เน็ต การใช้คอมพิวเตอร์ทำงานด้านเอกสาร เช่น ชุดโปรแกรม Microsoft Office เป็น งานที่ไม่เน้นการแสดงผลด้านกราฟฟิกสูงมาก ซึ่งสามารถใช้การ์ดแสดงผลระดับขั้นพื้นฐานทั่ว ๆ ไป ก็เพียงพอแล้วสำหรับงานประเภทนี้ ข้อสำคัญก็คือ การ์ดแสดงผลที่จะนำมาใช้กับงานด้านนี้ต้องสามารถรองรับความละเอียดสูงพอที่ จะดูรายละเอียดของงานด้านเอกสารได้ และมีความสามารถในการรองรับ Refresh Rate สูงได้ คุณสมบัคิต่างเหล่านี้จะช่วยถนอมสายตาของผู้ใช้งานเมื่อต้องนั่งทำงานอยู่ กับหน้าจอเป็นเวลานานๆ

             2.2.  ใช้ในงานกราฟฟิก 2 มิติ/ตัดต่อภาพวิดีโอ การ์ดแสดงผลประเภทนี้ใช้ในงานแสดงภาพเคลื่อนไหวประเภท 2 มิติ การตัดต่อวิดีโอ รวมทั้งงานด้านออกแบบตกแต่งภาพ 2 มิติ การ์ดประเภทนี้จะต้องมีความสามารถในการประมวลผลที่รวดเร็ว และสามารถรองรับการทำงานในโหมด 24 บิต (True Color) และสามารถปรับรายละเอียดของภาพได้ 1,024 x 768 เป็นอย่างต่ำ ส่วนงานด้านการตัดต่อวิดีโอต้องใช้ฮาร์ดแวร์ที่มีคุณสมบัติของ Video Capture จึงจะสามารถจับสัญญาณจากวิดีโอเข้ามายังคอมพิวเตอร์โดยผ่านช่องสัญญาณ AV บนตัวการ์ดได้

             2.3.  ใช้ในงานออกแบบการฟฟิก 3 มิติ/เขียนแบบ CAD/CAM เหมาะสำหรับนักออกแบบกราฟฟิก 3 มิติ การใช้งานโปรแดรม 3D Studio หรือ AutoCAD จำเป็นอย่างยิ่งสำหรับการเลือกใช้ Hardware ที่มีคุณสมบัติด้านภาพ 3 มิติอย่างครบครัน การ์ดสำหรับงานกราฟฟิก 3 มิตินี้จะไม่เหมือนกับการ์ด 3 มิติที่ใช้สำหรับการเล่นเกม 3 มิติตรงที่มันสามารถรองรับการทำงานของ OpenGl (โอเพนจีแอล OpenGL, เป็นตัวย่อของคำว่า Open Graphics Library) เป็นไลบรารีหรือคลังโปรแกรม(หรือชุดคำสั่ง)ด้านกราฟิกสามมิติ เพื่อส่งคำสั่งควบคุมการวาดภาพไปยังอุปกรณ์ฮาร์ดแวร์การประมวลผลภาพ โอเพนจีแอลสามารถใช้ได้ใน หลายระบบคอมพิวเตอร์ ในการเขียนโปรแกรมด้านคอมพิวเตอร์กราฟิกส์ โดยในคลังโปรแกรมจะมีชุดคำสั่งมีมากกว่า 250 ช่วย ในการสร้างวัตถุ แปลงวัตถุ และสร้างภาพโดยให้แสงและเงา โดยเริ่มจากการกำหนดรูปทรงพื้นฐาน เช่น สี่เหลี่ยมลูกบาศก์หรือทรงกลม โอเพนจีแอลเป็นที่นิยมมากในอุตสาหกรรมผลิตแอนิเมชันวีดีโอเกม โดยในขณะเดียวกันก็เป็นคู่แข่งทางการค้ากับไดเร็กท์ทรีดี ( Direct3D) ของบริษัทไมโครซอฟท์) นอก จากการพัฒนาเพื่อวีดีโอเกม โอเพนจีแอลยังใช้ในทางด้านอื่นๆ รวมถึงการ การประมวลผลภาพ งานจำลองการทดลองเชิงวิทยาศาสตร์ และ การแสดงภาพจำลองในระบบสารสนเทศ ได้ในทุก ๆ ฟังก์ชั่น รวมไปถึงความคมชัดและถูกต้องของสีที่ได้จะเป็นตัวกำหนดคุณภาพของการ์ดแต่ละ รุ่น นอกจากนั้นการใช้งานด้านนี้ต้องการปริมาณของวิดีโอแรมมากกว่างานด้านอื่น ๆ จึงทำให้การ์ดบางรุ่นที่มีประสิทธิภาพสูงราคาอาจจะสูงถึงหลักแสนก็เป็นได้

             2.4.  ใช้เพื่อเล่นเกมส์ 3 มิติ การแสดงภาพของเกมส์คอมพิวเตอร์ในปัจจุบันล้วนแล้วเน้นไปทางด้านภาพกราฟฟิก 3 มิติ กันมากขึ้น ซึ่งต้องอาศัยคุณสมบัติเฉพาะของการ์ดแสดงผลที่ช่วยเร่งความเร็วในการแสดงผล ของแต่ละฉากของเกมส์เพื่อให้แต่ละเฟรมลื่นไหลไม่เกิดอาการสะดุด ซึ่งการ์ดแสดงผลที่นิยมสำหรับผู้ที่ชื่นชอบการเล่นเกมส์คอมพิวเตอร์ใน ปัจจุบัน ได้แก่ การ์ดตระกูล GeForce ซึ่งมีจุดเด่นในด้านความเร็วและการสนับสนุนทางด้าน Driver ที่ดีจึงสามารถรองรับการทำงานของเกมส์ได้แทบจะทั้งหมด


    3 - แนะนำวิธีการเลือกซื้อ

             3.1. หน่วยความจำ ไม่ใช่ทุกอย่าง
                   เรื่องจริง การ์ดจอตอนนี้มาพร้อมกับหน่วยความจำจำนวนหนึ่ง เริ่มตั้งแต่ 128 256  512 หรือ แม้แต่รุ่นสูงมากๆซึ่งหน่วยความจำเหล่านี้จะช่วยได้มากในเรื่องของความ ละเอียด ซึ่งการ์ดจอรุ่นสูงๆนั้นมักจะมาพร้อมกับหน่วยความจำจำนวนมาก ทั้งนี้เพราะว่า หากหน่วยความจำไม่พอละก็ GPU ของ ก็จะเป็นด้วยประสิทธภาพเลยทีเดียว หากต้องการการประมวลผลจำนวนมาก ซึ่งผู้ผลิตการ์ดจอทราบดีว่าผู้ที่เลือกซื้อการ์ดจอนั้นมักจะมองหาการ์ดที่ มีหน่วยความจำสูงๆเพื่อเปรียบเทียบการ์ด โดยหากเราสังเกตดีๆในท้องตลาด   การ์ดรุ่นต่ำๆนั้นให้หน่วยความจำมา 256 หรือไม่ก็ 512 MB กันเลยทีเดียว เพื่อที่จะลดความเร็วของหน่วยประมวลผลลง โดยอาจจะดูดีเมื่อมองไปที่เสปคของการ์ด  ให้หน่วยความจำมาตั้งเยอะแยะ แต่ประสิทธิภาพที่แท้จริงของมันจะปรากฏเมือเริ่มเล่นเกม

             3.2. ทั้งหมดอยู่ที่ GPU
                   หน่วยความจำสำคัญก็จริง แต่หัวใจของการ์ดจริงๆนั้นจะอยู่ที่หน่วยประมวลผลกราฟิก  เมื่อค้นหาชื่อของการ์ดจอนั้น สิ่งสำคัญสิ่งแรกให้ดูไปที่ชนิดของ GPU ว่ามาจาก NVIDIA หรือ ATI หรือเปล่า แต่ก็ไม่เพียงพอหรอกหากจะดูแค่ว่ามากจาก NVIDIA Geforce หรือ ATI Radeon เท่านั้น   จำเป็นต้องดูที่รุ่นของการ์ดด้วยซึ่งรุ่น  จะบอกเราได้ว่าการ์ดตัวนี้จะมีราคาเท่าไหร่ ตั้งแต่ 2000 กว่าบาท จนถึง 20000 กว่าบาทเลย  แม้ว่าจะมาจากชื่อ Geforce หรือ Radeon เหมือนๆกัน ซึ่งรุ่นสูงกว่าจะมีประสิทธิภาพมากกว่า นอกจากรุ่นแล้วก็ยังมีรหัสต่อท้าย อย่างเช่น GT, GS, GTX, XT และ XTX ซึ่งตัวหนังสือเหล่านี้  เป็นตัวบอกถึงรุ่นของ Shader และความเร็วในการทำงาน

             3.3.ไปป์ไลน์ เชดเดอร์ และความเร็วในการประมวลผล
                   ต้องดูในความเร็วหน่วยความจำของ GPU และจำนวนพิกเซลไปป์ไลน์ ซึ่งจำนวนไปป์ไลน์ที่มากกว่า แสดงได้ถึงการส่งผ่านข้อมูลที่มากกว่าในการทำงานแต่ละครั้ง  จะเห็นได้ว่าการ์ดจอในรุ่นต่ำๆนั้นจะมีพิกเซลล์ไปป์ไลน์จำนวน 4 ไปป์ไลน์ รุ่นกลางนั้นจะมี 8-12 ไปป์ไลน์ และรุ่นสูงๆนั้นจะมีตั้งแต่ 16 ไปป์ไลน์ขึ้นไป และแน่นอนความเร็วก็มีผล แต่หากเปรียบเทียบระหว่างไปป์ไลน์กับความเร็วของคล๊อกนั้น ให้เลือกไปป์ไลน์เป็นหลัก   เช่นหากการ์ดชนิด 400 เมกกะเฮิร์ต ซึ่งมี 8 ไปป์ไลน์ จะมีประสิทธิภาพดีกว่าการ์ดที่มี 4 ไปป์ไลน์ที่ความเร็ว 500 เมกกะเฮิร์ต

             3.4. วินโดวส์วิสต้า และ Direct X 10
                   ไมโครซอฟท์มีแผนการจำหน่ายระบบปฏิบัติการ Windows Vista ในต้นปี 2007 ที่จะถึงนี้ ระบบปฏิบัติการใหม่นี้จะมีฟีเจอร์หลักตัวหนึ่งคือ DirectX 10 ซึ่งรวมเอาฟังก์ชั่นใหม่ๆของเกมยุคหน้า แม้ว่า Vista ยังคงทำงานกับการ์ด DirectX 9 ในตอนนี้ได้ แต่การ์ดที่สามารถรัน DirectX 10 ได้เพื่อให้มีประสิธิภาพสูงสุด  ทาง NVIDIA และ ATI เองนั้นก็ออกการ์ดของที่สนับสนุน DX10 ในช่วงปลายปี แต่ไม่ต้องกลัวว่าการ์ดที่ซื้อในตอนนี้นั้น  จะไม่สามารถที่จะเล่นเกมรุ่นใหม่ได้ และมีปัญหากับความเข้ากันได้ กว่าที่ระบบทั้งหมดจะปรับตัวให้เข้าที่เข้าทาง นักพัฒนาทำเกมสำหรับ DX10 ออกมานั้นก็กินเวลา 2-3 ปี โดยประมาณอยู่แล้ว ดังนั้นเกมในตอนนี้และอีกสองสามปีข้างหน้านั้นจะยังคงสามารถทีจะทำงานกับ การ์ดจอได้อยู่ต่อไป ซึ่งเห็นได้ว่าแม้เกมใหม่ๆอย่าง Halo 3 และ Shadowrun นั้นก็สนับสนุนทั้ง DX9 และ DX10 พร้อมๆกัน และยังคงเป็นอย่างนี้อยู่เรื่อยไปสักพักหลังจากที่วิสต้าออกมาแล้วก็ตาม

             3.5 คุณซื้อการ์ดได้ทุกเวลาเลย
                   จากการที่ NVIDIA และ ATI เป็นคู่กัดกันในด้านของการทำการ์ดจอมาตลอดนนั้นทำให้การ์ดจอนั้นออกมาในตลาด บ่อยมาก โดยปกติมักจะออกรุ่นใหม่มาราวๆทุก 12-18 ดือ นซึ่งก็จะเพิ่มประสิทธิภาพของการ์ดทั้งความเร็วคล็อก และเพิ่มฟังก์ชั่นใหม่ๆเข้าไป และด้วยการที่เทคโนโลยีใหม่ๆเข้ามาเรื่อยๆอย่างเช่น H.264 แบบไฮเดฟฟินิชั่นและ Shader Model แบบ Advance ออกมา อาจจะต้องรออย่างน้อย 2 ปีถึงจะให้เทคโนโลยีเหล่านี้แพร่หลาย  จึง มีเวลาดีตลอดเวลาในการที่จะเลือกซื้อการ์ดจอ โดยไม่ต้องรอ ราคาของการ์ดจอนั้นจะตกเร็วมากหากมีผลิตภัณฑ์ใหม่ๆออกมา ซึ่งสามารถที่จะใช้การ์ดจอในการเล่นเกมโปรดของได้ต่อไปอย่างแน่นอน อย่างน้อยก็ 2-3 ปี

             3.6.ไม่จำเป็นต้องจ่ายแพงเพื่อซื้อการ์ดจอ
                   การ์ด จอรุ่นใหม่ๆที่ออกมาตอนนี้นั้นในรุ่นสูงๆจะมีราคาราวหมื่นถึงสองหมื่นบาท โดยสามารถหาการ์ดในรุ่นก่อนหน้าที่เป็นรุ่นสูงของมันซื่งสนับสนุนเทคโนโลยี ที่เกมในปัจจุบันใช้กันอยู่ได้ในราคา 6000-10000 บาท  ให้ลองตรวจสอบไปป์ไลน์และความเร็วของคล็อกเพื่อเปรียบเทียบการ์ดจาก เทคโนโลยีในยุคที่ต่างกัน โดย  จะเห็นว่าบางครั้งมันค่อนข้างเหมือนกันเลยทีเดียว

             3.7. มีพาวเวอร์เพียงพอ
                   ให้ ลองตรวจสอบเคสก่อนว่ามีตัวจ่ายไฟหรือพาวเวอร์ซัพไพลในการจ่ายไฟให้การ์ดจอ เพียงพอหรือไม่ เพราะว่าการ์ดจอรุ่นใหม่ ๆ เป็นตัวดูดไฟ หรือค่อนข้างจะกินไฟพอสมควร   ผู้ผลิตมักจะบอกความต้องการไฟไว้ข้างกล่องของตัวการ์ดเสมอ  การ์ดจอรุ่นสูงๆ  มักต้องการพาวเวอร์ซัพพลาย 400 วัตต หรือ 450 วัตต์ หากเป็นการ์ดอบบคู่เช่น SLI หรือ CrossFire นั้นอาจจะต้องการพาวเวอร์ซัพพลายมากถึง 550 วัตต์เลยทีเดียว

             3.8. AGP หรือ PCI Express
                   ตัวของ PCI Express ได้เข้ามาแทนอินเทอร์เฟสแบบ AGP โดยสมบูรณ์แบบ โดยมีแบนวิธมากกว่า AGP ถึง 2-4 เท่าและการ์ดจอรุ่นใหม่โดยมากจะมาแบบ PCI Express ทั้งนั้น แม้ว่าการ์ดบางรุ่นจะทำมาสำหรับ AGP เพื่อคนที่ใช้อยู่แล้วจะอัพเกรด   แต่หากซื้อการ์ดจอใหม่เราแนะนำ PCI Express

             3.9. SLI และ Crossfire
                   หากต้องการการ์ดคู่ในการทำงานหรือเล่นเกม เมื่ออัพเกรดการ์ดเป็นการ์ดคู่  อย่าลืม  SLI และ CrossFire ซึ่ง แน่นอนว่าประสิทธิภาพที่ได้นั้นจะต้องมากกว่าการ์ดเดี่ยวอย่างแน่นอน โดยอาจจะต้องการเมนบอร์ดที่ออกแบบมาเฉพาะ และพาวเวอร์ซัพพลายที่เพียงพอ  NVIDIA และ ATI แข่งกันมากเรื่องของการ์ดคู่ โดย NVIDIA นั้นจะมี SLI (Scalable Link Interface) เป็นหัวหอก และ ATI จะมี CrossFire การ์ดที่จะเลือกมาทั้ง SLI และ CrossFire นั้นจะต้องเป็นการที่ระบุว่าสามารถใช้ SLI หรือ CrossFire ได้ รวมถึงเมนบอร์ดต้องสนับสนุนด้วย

             3.10 ซื้อการ์ดจอต้องได้การ์ดจอ
                   เลิกคิดถึงระบบประมวลผลกราฟิกแบบออนบอร์ดไปได้   หากเลือกซื้อทางอินเตอร์เน็ต หรือต้องการระบบดีๆเพื่อมาเล่นเกมโปรดหรือทำงานกราฟิกแบบหนักหน่วง   ปิดบราวเซอร์ไปได้เลยหากเจอคำว่า Integrated Graphic หรือ Graphic On Board เพราะหากเลือกแบบนี้มา   มันก็เพียงพอสำหรับการใช้งานพวก Word หรือเล่นอินเตอร์เน็ตเท่านั้น  และหากต้องการจะเล่นเกมมันก็สามารถเล่นได้เพียงความละเอียด 800 x 600 ที่ 15 เฟรมต่อวินาทีเท่านั้นเอง




    ที่มา - วิชาการ.คอม (www.vcharkarn.com)

    ยี่ห้อการ์ดจอต่างๆ
    ปัจจุบันการ์ดแสดงผลมีหลายยี่ห้อ เช่น XFX MSI Inno 3D Winfast ASUS 





    วันศุกร์ที่ 12 สิงหาคม พ.ศ. 2554

    Pipeline (ไปป์ไลน์)

    Pipeline (ไปป์ไลน์)

    - การทำงานของ Pipeline
    - ประสิทธิภาพของ Pipeline
    - การเชื่อมต่อของ Pipeline
    - การขาดอิสระในการทำงานของ Pipelin
    - ปัญหาของ Pipeline(Pipeline Hazards)

         Pipeline เป็นเทคนิคในการดำ เนินการของการประมวลผลของคำสั่งหลายๆคำสั่งที่คาบ
    เกี่ยวกัน(Overlapped) และเป็นการเพิ่มประสิทธิภาพให้กับหน่วยประมวลผลกลาง โดยแบ่ง
    Pipeline ออกเป็นขั้นตอนย่อย ๆ เวลาในการประมวลผลในแต่ละคำสั่งของ Pipeline จะไม่ลดลง แต่
    จะมีการเพิ่มคำสั่ง Throughput แทน ก็คือการทำงานหลาย ๆ คำสั่งพร้อมกันในเวลาหนึ่ง ๆ

    การทำงานของ Pipeline

         การทำงานโดยใช้ Pipeline ของ CPU นั้นจะใช้วิธีส่งต่องานกันไปเป็นทอดๆ เช่น จากการ
    Fetch แล้วส่งต่อให้ทำ การ Decode ลักษณะการทำงานแบบนี้จะไม่ได้ช่วยให้ประสิทธิภาพสูงขึ้น
    เพราะเมื่อมีการส่งต่องานกันแล้ว ก็จะว่างลง และรอจนกว่าจะถึงเวลาที่ต้องทำงานหรือรับงานใหม่
    อีกครั้ง ซึ่งความจริงแล้ว แต่ละขั้นของการทำงานนั้นสามารถที่จะทำพร้อมกันได้
    Pipeline ก็คือการทำงานโดยไม่มีการรอ เมื่อทำงานนั้นเสร็จและส่งข้อมูลเรียบร้อยแล้ว จะ
    ต้องทำงานตามคำสั่งต่อไปทันที ดังนั้นจึงไม่มีการว่างงานเกิดขึ้นในสัญญาณนาฬิกา

    ขั้นตอนหลักๆในการทำงานทั้งหมดมี 5 ขั้นตอน คือ

         • Instruction Fetch หรือ ภาครับคำสั่งจะทำหน้าที่รับคำสั่งใหม่ๆ ทั้งจากหน่วยความจำหลัก
    หรือจากใน Instruction Cache เข้ามา เพื่อส่งต่อให้ภาคต่อไปจัดการต่อ
         • Instruction Decode หรือ ภาคการแปลคำสั่ง คือ จะทำหน้าที่แยกแยะคำสั่งต่างๆ ของ CISC
    ซึ่งในตอนที่แล้ว เราทราบแล้วว่า CISC นั้น ในแต่ละคำสั่งจะมีขนาดที่ไม่แน่นอน ตรง
    ส่วนนี้ก็จะทำการซอยคำสั่งนั้นเป็นคำสั่งย่อยๆ ให้มีความยาวเท่าๆกัน ในลักษณะเช่นเดียว
    กับ RISC เรียกคำ สั่งย่อยๆ นั้นว่า Micro Operation
         • Get Operands หรือ ภาครับข้อมูล คือ รับข้อมูลที่จะใช้ในการประมวลผลเข้ามาเก็บไว้ เช่น
    จากขั้นตอนที่ 2 เรารู้ว่าจะใช้การ "บวก" ก็ต้องรับค่าที่จะใช้ในการบวก มาด้วยอีก 2 ค่า
    บางทีขั้นตอนนี้ ก็ถูกรวมเข้ากับขั้นตอนที่ 2
         • Execute หรือ ภาคประมวลผล เป็นขั้นตอนที่ทำการประมวลผลตามคำสั่งและ operand ที่
    ได้รับมาจากขั้นที่ 2 และ 3 ซึ่ง ถ้าให้ขั้นที่ 2 เป็นการถอดรหัสว่าเป็นการบวก ขั้นที่ 3 รับ
    ค่าที่จะบวก ขั้นนี้ ( ขั้นที่ 4 ) ก็จะทำการบวกให้ได้ผลลัพธ์ออกมา
         • Write Result หรือ ภาคการเขียนข้อมูลกลับ เมื่อทำการประมวลผลเสร็จสิ้น ผลลัพธ์ที่ได้ก็
    จะนำ ไปเก็บไว้ใน register หรือ ใน Data Cache ซึ่งบางที ขั้นตอนนี้ ก็ถูกมองรวมไว้กับขั้น
    ที่4  

     

         โดย Pipeline มีส่วนคล้ายกับเครื่องกลในโรงงานที่ทำงานในปริมาณมากภายในโรงงาน
    อุตสาหกรรมซึ่งจะได้ประโยชน์อย่างแท้จริงต่องานในหลายๆ ประเภท และสามารถทำงานได้
    หลายขั้นตอนในเวลาเดียวกัน โดยจะคล้ายกับการทำงานของ Pipeline
    เราสามารถแบ่งการพิจารณาปลีกย่อยออกเป็น 2 แบบ คือ fetch instruction และ
    execute instruction โดยเวลาที่ใช้ระหว่างการทำงานของชุดคำสั่ง เมื่อหน่วยความจำ หลักยัง
    ไม่ได้ทำการเข้าถึงข้อมูลภายในหน่วยความจำหลัก โดย Pipeline มี 2 ส่วนที่แยกเป็นอิสระ
    จากกัน โดยส่วนแรกจะทำการ fetch ในชุดคำสั่งเมื่อส่วนที่สองเป็นที่ว่าง ขณะที่ส่วนที่สอง
    กำ ลังทำงานอยู่นั้นส่วนแรกจะทำ การ fetch ในคำสั่งต่อไป ซึ่งจากเรียกการทำงานเช่นนี้ว่า
    instruction prefetch หรือ fetch overlap
         Pipeline จะทำการประมวลผลในแต่ละคำสั่งด้วยความเร็วสูง ถ้าการ fetch และ
    execute ใช้เวลาใกล้เคียงกัน โดยจะทำให้เวลาในการทำงานจะเหลือครึ่งหนึ่ง การ execute
    ในแต่ละขั้นตอนนั้นจะมีความแตกต่างกัน แบ่งออกได้เป็น 2 ข้อดังนี้
    1. execute time จะใช้เวลามากกว่าเวลาที่ใช้ในการ fetch ซึ่งการ execute นั้นยังก่อ
    ให้เกิดการอ่านและการสะสมในแต่ละขั้นตอน ซึ่งขั้นตอนการ fetch จะใช้เวลารอในการ fetch
    หาที่ว่าง
    2. การเปลี่ยนแปลง address ของชุดคำสั่งจะทำให้ชุดคำสั่งถัดไปไม่มีการ fetch โดย
    ขั้นตอนการ fetch จะต้องรอจนกระทั่งรับคำสังจากชุดคำสั่งถัดไปจากขั้นตอนการ execute

    จาก 2 เหตุผลดังกล่าวทำ ให้ลดการเสียเวลาที่ใช้ในการสุ่มเลือก เมื่อมีการปรุบเปลี่ยน
    ชุดคำ สั่งที่ผ่านการ fetch จากขั้นตอนการ execute ขั้นตอนการ fetch จะทำ การ fetch ชุดคำ สั่ง
    ถัดไปภายในหน่วยความจำ หลัก ถ้าสาขาของ Pipeline ไม่มีการทำ งานก็จะไม่เสียเวลาในการ
    ทำ งาน แต่ถ้าสาขาของ Pipeline มีการทำ งานเกิดขึ้น การ fetch ชุดคำ สั่งจะต้องยกเลิกไปและ
    จะต้องทำ การ fetch ในชุดคำ สั่งใหม่
         ขณะที่ปัจจัยดังกล่าวสามารถลดผลกระทบของ Pipeline ได้ทั้งสองขั้นตอน และสามารถ
    เพิ่มความเร็วในการทำ งานได้มากขึ้น ดังนั้นเราต้องคำ นึงถึงการประมวลผลชุดคำสั่งที่ต้องแบ่ง
    ออกเป็นส่วนๆ
    - Fetch instruction (FI) : การอ่านขุดคำ สั่งที่จะเข้าสู่การประมวลผล
    - Decode instruction (DI) : การกำหนด opcode และ operand
    - Caculate operands (CO) : การคำนวณผลกระทบที่ต่างๆ เช่น involve
    displacement ,register indirect ,indirect เป็นต้น
    - Fetch operands (FO) : การ fetch ในแต่ละ operand จากหน่วยความหลัก
    - Execute instruction (EI) : การแสดงการทำงานและเก็บผลที่ได้จากการประมวลผล
    - Write operand (WO) : การเก็บผลที่ได้จากการประมวลผลในหน่วยความจำหลัก
    จากข้อความข้างต้นแสดงให้เห็นว่าในแต่ละชุดคำ สั่งควรจะใช้ทั้งหมด 6 ขั้นตอนใน
    Pipeline แต่นั่นก็ไม่เสมอไป ดังเช่นตัวอย่าง ,การดึงชุดคำ สั่งนั้นไม่จำ เป็นต้องใช้ขั้นตอน WO
    อย่างไรก็ตาม Pipeline แบบง่ายๆ ใน hardware เวลาก็จะกำหนดขึ้นเมื่อมีการเรียกจากทั้งหมด
    6 ขั้นตอน โดยในแต่ละขั้นตอนนั้นจะมีการทำงานที่คล้ายคลึงกัน ดังเช่นตัวอย่าง ,ขั้นตอน FI
    ,FO และ WO กำลังอยู่ในระหว่างการเข้าถึงหน่วยความจำ และถ้ามีพื้นที่ว่างภายในหน่วยความ
    ดังกล่าวจะมีการเข้าถึงข้อมูลเกิดขึ้นในเวลาเดียวกันอย่างไรก็ตาม อาจจะมีการเก็บข้อมูลต่างๆ
    ในขั้นตอน FO และ WO อาจจะใช่ไม่ได้ การใช้เวลามากๆ ในการทำงานซึ่งจะทำให้หน่วยความ
    จำ ที่เก็บข้อมูลที่ต่างกัน ซึ่งจะทำ ให้การทำงานของ Pipeline ช้าลง
    อีกหลายๆ ปัจจัยที่มีผลทำ ให้ประสิทธิภาพในการทำงานสูงขึ้น ถ้าขั้นตอนที่กล่าวมาทั้ง
    6 นั้นไม่มีความสมดุลกันก็จะทำให้เสียเวลาในการทำงานในแต่ละขั้นตอน และอีกหนึ่งปัจจัยที่มี
    ส่วนสำ คัญในการปรับเปลี่ยนชุดคำสั่ง โดยที่สามารถทำให้การ fetch ชุดคำสั่งให้ไม่สามารถใช้
    งานได้ และไม่สามารถที่จะทำการคาดเดาได้ทำให้การทำงานหยุดชะงักลง
    ดังที่กล่าวมาแล้ว การทำงานจะแสดงให้เห็นถึงการทำงานของ Pipeline ที่ใช้เวลาใน
    execute ชุดคำสั่งได้อย่างดี โดยเห็นได้จากเครื่อง IBM S/360 ชี้ให้เห็นถึงปัจจัยหลักๆ 2 ข้อ
    ซึ่งจะเข้าไปทำลายระบบที่มีผลต่อประสิทธิภาพในการทำงาน
    1. ในแต่ละขั้นตอนของ Pipeline ซึ่งจะก่อให้เกิดการเคลื่อนที่ของข้อมูล และในการ
    ทำ งานจะทำให้เกิดความพร้อมและประโยชน์ในหลายๆ ด้าน โดยจะใช้เวลามากพอสมควรใน
    การ execute ต่อหนึ่งคำ สั่ง โดยจะแสดงเมื่อชุดคำ สั่งที่จะขึ้นอยู่กับเหตุและผล และขึ้นอยู่กับ
    การเข้าถึงหน่วยความจำ
    2. โดยศูนย์รวมการทำงานทั้งหมดจะขึ้นอยู่กับการทำงานของหน่วยความจำ และ
    register ซึ่งจะได้ผลน้อยที่สุดโดยใช้ Pipeline ที่เพิ่มขั้นตอนให้มากขึ้น และสามารถนำ สถาน
    การณ์มาใช้เพื่อควบคุมในแต่ละขั้นตอน โดยเฉพาะขั้นตอนที่มีความซับซ้อนมาก
    ชุดคำสั่งที่ทำงานโดย Pipeline จะมีประสิทธิภาพในการทำงานสูงขึ้น แต่จะต้องมีการ
    ควบคุมเพื่อให้ได้ประโยชน์สูงสุด
    ประสิทธิภาพของ Pipeline

         ในส่วนย่อยๆ นั้น เราสามารถพัฒนาการทำงานของ Pipeline และการเพิ่มความรวดเร็ว
    ของเวลาที่ใช้ในการทำงาน cycle time (T) ของชุดคำสั่งที่ทำงานโดย Pipeline คือเวลาที่
    ต้องการให้เกิดการพัฒนาในขั้นตอนของ Pipeline

    การเชื่อมต่อของ Pipeline

         ปัญหาใหญ่ในการออกแบบชุดคำสั่ง Pipeline คือการทำให้ผลที่ได้ออกมาได้ผลดีในขั้น
    ตอนแรกของชุดคำสั่งปัญหาแรกคือการปรับเปลี่ยนของชุดคำสั่งจนกระทั่งจะมีการ execute
    ซึ่งเป็นไปไม่ได้ที่จะกำหนดสาขาของ Pipeline


    ประสิทธิภาพเบื้องต้นของ Pipelining
    Pipelining จะทำ ให้ชุดคำ สั่งใน CPU ทำ งานเร็วขึ้นโดยชุดคำ สั่งที่สมบูรณ์ต่อหน่วยเวลา
    แต่ไม่สามารถลดเวลาในการทาํ งานในการแยกชุดคาํ สั่ง ในขอ้ เทจ็ จรงิ โดยปกตแิ ลว้ เวลาในการ
    ทำ งานเพิ่มขึ้นเล็กน้อย ชุดคำ สั่งจะกำ หนดโดย overhead ที่ควบคุมโดย pipeline ในการเพิ่มชุดคำ สั่ง
    นั้น คือ ตัว program สามารถ runได้รวดเร็วและเวลาในการ executing น้อย
    ข้อจำ กัดที่เหมาะสมของ pipeline จะเกิดขึ้นจาก
    -! pipeline latency : เกี่ยวกับเวลาในการ executue ของชุดคำ สั่งทุกชุดคำ สั่งนั้น ไม่ทำ ให้ข้อจำ กัด
    ของการเกิด pipeline ลดลง
    -! Imbalanc among pipeline stage : การไม่เหมาะสมของจำ นวน pipeline ทำ ให้ประสิทธิภาพนั้น
    ลดลง clock time ไม่สามารถ run ได้รวดเร็วกว่าเวลาที่ต้องการ ทำ ให้ขั้นตอนการ pipeline นั้น
    ช้าลง
    -! pipeline overhead : pipeline overhead เกิดจากการรวมของ pipelining register delay (เวลาใน
    การเกิดข้นรวมกับเวลาในการแพร่กระจาย) and clock skew

    ปัญหาที่เป็นอุปสรรคของ Pipeline

    ปัญหาที่เกิดจาก pipeline คือ
    1.Structural Hazards : เกิดจากการขัดแย้งเมื่อ hardware ไม่สามารถรองรับการรวมชุดคำ สั่งพร้อม
    กันในเวลาเดียวกัน เกิดการทับซ้อนกันเมื่อมีการ execute
    2. Data Hazards : เกิดจากการทีชุดคำสั่งทับซ้อนกัน ไม่สามารถที่จะ execute
    3.Control Hazard : pipe line ที่แยกชุดคำสั่งไม่สามารถควบคุมสัญญาณได้
    ปัญหา pipe line แก้ได้โดย ใช้ตัวถ่วงเวลา
    -! A cache miss : ชุดคำสั่งทั้งหมดของ pipe line ทั่งก่อนและหลังขาดหายไป
    -! A hazard in pipe line : ชุดคำสั่งของ pipe line จะยอมรับการ process โดยที่ตัวอื่นๆช้าลง เมื่อ มี
    การถ่วงเวลาจะทำให้ชุดคำสั่งช้าลงด้วย ปัญหาที่เกิดขึ้น จากโครงสร้าง (Structural Hazard)
    เมื่อมีการทำ Pipeline มีการทับซ้อนกันของชุดคำ สั่ง ในการทำงาน เมื่อ functional unit เกิด
    การทำซํ้าเป็นไปได้ที่ชุดคำสั่งมีการรวมกันในการทำ Pipeline ถ้าการรวมชุดคำสั่งไม่สามารถจะ
    บรรลุเป้าหมายได้ เพราะเกิดการขัดข้องของเครื่องเรียกว่า Structural hazard
    ตัวอย่างการเกิด Structural hazard เมื่อ
    -! functional unit ไม่เต็มที่ของ Pipeline โดยลำดับของชุดคำสั่งไม่เป็นแบบ pipe line ถ้าไม่
    สามารถทำ การ
    -! process rate of one per clock cycleเมื่อบางส่วนไม่สามารถทำงานซํ้าได้ ทำให้ไม่สามารถรวม
    ชุดคำ สั่งได้ เมื่อมีการทำ pipe line
    ข้อเสนอแนะ
    ก่อนที่ประสิทธิภาพจะลดลง เราสามารถออกแบบ Structural hazard ได้อย่างไร
    -! ลดการสูญเสีย และเครื่องสามารถรองรับชุดคำสั่งได้
    -! ลด latency of the unit

    การขาดอิสระในการทำงานของ Pipeline

         เมื่อเราทราบแล้วว่าการให้ CPU ทำงานโดยการใช้ Pipeline นั้นทำให้ประสิทธิภาพสูงขึ้น
    จึงมีคำถามเกิดขึ้นว่า ทำไมถึงไม่ให้ CPU ใช้ Pipeline จำ นวนมาก ๆ เช่นอาจเพิ่มจำนวน Pipeline
    ให้มากถึง 500 Pipeline
    การให้ CPU ทำ งานโดยใช้ Pipeline นั้นทำ ให้ประสิทธิภาพนั้นดีขึ้น จริงอยู่ แต่การที่จะให้
    มีการใช้ Pipeline เป็นจำ นวนมาก ๆ ถึง 500 Pipeline นั้นเป็นสิ่งที่เป็นไปได้ยาก เนื่องจากว่า การใช้
    Pipeline จำ นวนมากขนาดนั้นจะทำ ให้ระบบการทำ งานภายใน Pipeline นั้นมีความยุ่งยากมากขึ้น
    และที่สำ คัญคือ ขนาดของ Die จะต้องใหญ่ขึ้นกว่าเดิมถึง 500 เท่าหากเทียบกับ CPU ที่ทำ งานโดย
    ไม่ใช้ Pipeline ซึ่งจะส่งผลให้ค่าใช้จ่ายสูงขึ้น และจะทำ ให้ CPU ตัวนั้นมีราคาแพงเกินไป
    แม้ว่าการทำ งาน โดยใช้ Pipeline นั้นจะส่งผลดีต่อระบบ แต่โดยปกติแล้วคำ สั่งประมาณ
    10-20% จะเป็นคำ สั่งย่อย ๆ เช่น คำ สั่งที่ 1 กำ หนดให้ค่าของ c=a+b และคำ สั่งที่ 2 ถ้าค่าของ c มาก
    กว่า 4 ให้คูณค่าของ c ด้วย 2 โดยหากคำ สั่งมีลักษณะเช่นนี้ จะไม่สามารถทำ คำ สั่งที่ 2 ได้จนกว่าจะ
    ได่ผลลัพธ์ของคำ สั่งที่ 1 ก่อน ซึ่งปัญหานี้ก็ได้เกิดขึ้นกับ การใช้ Pipeline ของ CPU เนื่องจากการ
    ทำ งานในคำ สั่งที่ 1 นั้นยังไม่ได้มีการบันทึกผลลงหน่วยความจำ เลย ก็มีการคำ นวณในคำ สั่งที่ 2
    แล้ว ดังนั้นเมื่อเกิดปัญหา เช่น ทำ ให้ Pipeline นั้นต้องมีการรอให้มีการบันทึกผลในคำ สั่งที่ 1 เสร็จ
    สิ้นก่อนถึงจะทำ งานได้ ซึ่งการรอนี้จะส่งผลให้เสียเวลาไปอย่างน้อย 1 สัญญาณนาฬิกา ซึ่งอาจทำ
    ให้ประสิทธิภาพของระบบลดลงได้ และหากใช้ Pipeline ที่มากกว่านี้ ก็จะมีการรอที่นานขึ้น

    CPU (ไมโครโปรเซสเซอร์)

    CPU (ไมโครโปรเซสเซอร์)
     





    ประวัติความเป็นมาของไมโครโปรเซสเซอร์
     
         ไมโครโปรเซสเซอร์กำเนิด ขึ้นมาในช่วงต้นทศวรรษที่ 1970 โดยเกิดจากการนำเทคโนโลยี 2 อย่างมาพัฒนาร่วมกันซึ่งก็คือเทคโนโลยีทางด้านดิจิตอลคอมพิวเตอร์และเทคโนโลยี ทางดัานโซลิดสเตต(solidstate) 

    ถ้าเปรียบเทียบกับร่างกายของมนุษย์โพรเซสเซอร์ก็น่า จะเปรียบเทียบเป็นเหมือนสมองของมนุษย์นั่งเอง ซึ่งคอยคิดควบคุมการทำงานส่วนต่างๆของร่างกาย ดังนั้นถ้าจัดระดับความสำคัญแล้วโพรเซสเซอร์ก็น่าจะมีความสำคัญเป็นอันดับ แรก
    บล็อกไดอะแกรมของโพรเซสเซอร์


    ส่วนประกอบของโพรเซสเซอร์มีดังนี้

      Bus Interface Unit (BIU) (Cbox) คือส่วนที่เชื่อมต่อระหว่าง address bus, control bus และ data bus กับภายนอกเช่น หน่วยความจำหลัก (main memory) และอุปกรณ์ภายนอก (peripherals)
      Memory Management Unit (MMU) (Mbox) คือส่วนที่ควบคุมโพรเซสเซอร์ในการใช้งานแคช (cache) และหน่วยความจำ (memory) โดย MMU ยังช่วยในการทำ virtual memory และ paging ซึ่งแปลง virtual addresses ไปเป็น physical addresses โดยใช้ Translation Look-aside Buffer (TLB)
      Integrated on-chip cache เป็นส่วนสำหรับเก็บข้อมูลที่ใช้งานบ่อยๆใน Synchronous RAM (SRAM) เพื่อให้การทำงานของโพรเซสเซอร์มีประสิทธิภาพสูงสุด ใช้งานได้ทั้ง L1 และ L2 on chip cache
      Prefetch Unit (part of Ibox) คือส่วนที่ดึงข้อมูลและคำสั่งจาก instruction cache และ data cache หรือ main memory based เมื่อ Prefetch Unit อ่านข้อมูลและคำสั่งมาแล้วก็จะส่งข้อมูลและคำสั่งเหล่านี้ต่อไปให้ Decode Unit
      Decode Unit or Instruction Unit (part of Ibox) คือส่วนที่แปลความหมาย ถอดรหัส หรือแปลคำสั่ง ให้เป็นรูปแบบที่ ALU และ registers เข้าใจ
      Branch Target Buffer (BTB) คือส่วนที่บรรจุคำสั่งเก่าๆที่เข้ามาสู่โพรเซสเซอร์ ซึ่ง BTB นั้นเป็นส่วนหนึ่งของ Prefetch Unit
      Control Unit or Execution Unit คือส่วนที่เป็นศูนย์กลางคอยควบคุมการทำงานในโพรเซสเซอร์ดังนี้
         อ่านและแปลความหมายของคำสั่งตามลำดับ
         ควบคุม Arithmetic and Logic Unit (ALU), registers และส่วนประกอบอื่นๆของโพรเซสเซอร์ ตามคำสั่ง
         ควบคุมการเคลื่อนย้ายของข้อมูลที่รับ-ส่งจาก primary memory และอุปกรณ์ I/O
      ALU (Ebox) คือส่วนที่ปฎิบัติตามคำสั่งและเปรียบเทียบ operands ในบางโพรเซสเซอร์มีการแยก ALU ออกเป็น 2 ส่วนดังนี้
         Arithmetic Unit (AU)
         Logic Unit (LU)
         operation ที่ ALU ปฎิบัติตามเช่น
         Arithmetic operations (+, -, *, และ /)
         Comparisons (<, >, และ =)
         Logic operations (and, or)
      Floating-Point Unit (FPU) (Fbox) คือส่วนที่ทำการคำนวณเกี่ยวกับจำนวนตัวเลขที่เป็นจุดทศนิยม
      Registers (part of Ibox, Fbox, และ Ebox) คือส่วนที่ใช้สำหรับเก็บข้อมูลสำหรับการคำนวณในโพรเซสเซอร์
         Data register set เก็บข้อมูลที่ใช้งานโดย ALU เพื่อใช้สำหรับการคำนวณที่ได้รับการควบคุมจาก Control Unit ซึ่งข้อมูลนี้อาจส่งมาจาก data cache, main memory, หรือ Control Unit ก็ได้
         Instruction register set เก็บคำสั่งที่กำลังทำงานอยู่ 

    หน่วยประมวลผลกลาง (Central Processing Unit : CPU)

         หน่วยประมวลผลกลางหรือซีพียู เรียกอีกชื่อหนึ่งว่า โปรเซสเซอร์ (Processor) หรือ ชิป (chip) นับเป็นอุปกรณ์ ที่มีความสำคัญมากที่สุด ของฮาร์ดแวร์เพราะมีหน้าที่ในการประมวลผลข้อมูลที่ผู้ใช้ป้อน เข้ามาทางอุปกรณ์อินพุต ตามชุดคำสั่งหรือโปรแกรมที่ผู้ใช้ต้องการใช้งาน หน่วยประมวลผลกลาง ประกอบด้วยส่วนประสำคัญ 3 ส่วน คือ 

    1. หน่วยคำนวณและตรรกะ (Arithmetic & Logical Unit : ALU)

         หน่วยคำนวณตรรกะ ทำหน้าที่เหมือนกับเครื่องคำนวณอยู่ในเครื่องคอมพิวเตอร์โดยทำงานเกี่ยวข้อง กับ การคำนวณทางคณิตศาสตร์ เช่น บวก ลบ คูณ หาร นอกจากนี้หน่วยคำนวณและตรรกะของคอมพิวเตอร์ ยังมีความสามารถอีกอย่างหนึ่งที่เครื่องคำนวณธรรมดาไม่มี คือ ความสามารถในเชิงตรรกะศาสตร์ หมายถึง ความสามารถในการเปรียบเทียบตามเงื่อนไข และกฏเกณฑ์ทางคณิตศาสตร์ เพื่อให้ได้คำตอบออกมาว่าเงื่อนไข นั้นเป็น จริง หรือ เท็จ เช่น เปรียบเทียบมากว่า น้อยกว่า เท่ากัน ไม่เท่ากัน ของจำนวน 2 จำนวน เป็นต้น ซึ่งการเปรียบเทียบนี้มักจะใช้ในการเลือกทำงานของเครื่องคอมพิวเตอร์ จะทำตามคำสั่งใดของโปรแกรมเป็น คําสั่งต่อไป 

    2. หน่วยควบคุม (Control Unit)

         หน่วยควบคุมทำหน้าที่คงบคุมลำดับขั้นตอนการการประมวลผลและการทำงานของ อุปกรณ์ต่างๆ ภายใน หน่วยประมวลผลกลาง และรวมไปถึงการประสานงานในการทำงานร่วมกันระหว่างหน่วยประมวลผลกลาง กับอุปกรณ์นำเข้าข้อมูล อุปกรณ์แสดงผล และหน่วยความจำสำรองด้วย เมื่อผู้ใช้ต้องการประมวลผล ตามชุดคำสั่งใด ผู้ใช้จะต้องส่งข้อมูลและชุดคำสั่งนั้น ๆ เข้าสู่ระบบ คอมพิวเตอร์เสียก่อน โดยข้อมูล และชุดคำสั่งดังกล่าวจะถูกนำไปเก็บไว้ในหน่วยความจำหลักก่อน จากนั้นหน่วยควบคุมจะดึงคำสั่งจาก ชุดคำสั่งที่มีอยู่ในหน่วยความจำหลักออกมาทีละคำสั่งเพื่อทำการแปล ความหมายว่าคำสั่งดังกล่าวสั่งให้ ฮาร์ดแวร์ส่วนใด ทำงานอะไรกับข้อมูลตัวใด เมื่อทราบความหมายของ คำสั่งนั้นแล้ว หน่วยควบคุมก็จะส่ง สัญญาณคำสั่งไปยังฮาร์แวร์ ส่วนที่ทำหน้าที่ ในการประมวลผลดังกล่าว ให้ทำตามคำสั่งนั้น ๆ เช่น ถ้าคำสั่ง ที่เข้ามานั้นเป็นคำสั่งเกี่ยวกับการคำนวณ หน่วยควบคุมจะส่งสัญญาณ คำสั่งไปยังหน่วยคำนวณและตรรกะ ให้ทำงาน หน่วยคำนวณและตรรกะก็จะไปทำการดึงข้อมูลจาก หน่วยความจำหลักเข้ามาประมวลผล ตามคำสั่งแล้วนำผลลัพธ์ที่ได้ไปแสดงยังอุปกรณ์แสดงผล หน่วยคงบคุมจึงจะส่งสัญญาณคำสั่งไปยัง อุปกรณ์แสดงผลลัพธ์ ที่กำหนดให้ดึงข้อมูลจากหน่วยความจำหลัก ออกไปแสดงให้เห็นผลลัพธ์ดังกล่าว อีกต่อหนึ่ง 

    3. หน่วยความจำหลัก (Main Memory)

         คอมพิวเตอร์จะสามารถทำงานได้เมื่อมีข้อมูล และชุดคำสั่งที่ใช้ในการประมวลผลอยู่ในหน่วยความ จำหลักเรียบร้อยแล้วเท่านั้น และหลักจากทำการประมวลผลข้อมูลตามชุดคำสั่งเรียบร้อบแล้ว ผลลัพธ์ที่ได้ จะถูกนำไปเก็บไว้ที่หน่วยความจำหลัก และก่อนจะถูกนำออกไปแสดงที่อุปกรณ์แสดงผล

    การทำงานของหน่วยประมวลผลกลาง

    การทำงานของหน่วยประมวลผลกลางแบบพื้นฐาน
    การทำงานของหน่วยประมวลผลกลางแบ่งออกตามหน้าที่ได้เป็นห้ากลุ่มใหญ่ๆ ดังนี้ โดยทำงานทีละคำสั่ง จากคำสั่งที่เรียงลำดับกันไว้ตอนที่เขียนโปรแกรม
    • Fetch - การอ่านชุดคำสั่งขึ้นมา 1 คำสั่งจากโปรแกรม ในรูปของระหัสเลขฐานสอง (Binary Code from on-off of BIT)
    • Decode - การตีความ 1 คำสั่งนั้นด้วยวงจรถอดรหัส (Decoder circuit) ตามจำนวนหลัก (BIT) ว่ารหัสนี้จะให้วงจรอื่นใดทำงานด้วยข้อมูลที่ใด
    • Execute - การทำงานตาม 1 คำสั่งนั้น คือ วงจรใดในไมโครโปรเซสเซอร์ทำงาน เช่น วงจรบวก วงจรลบ วงจรเปรียบเทียบ วงจรย้ายข้อมูล ฯลฯ
    • Memory - การติดต่อกับหน่วยความจำ การใช้ข้อมูที่อยู่ในหน่วยจำชั่วคราว (RAM, Register) มาใช้ในคำสั่งนั้นโดยอ้างที่อยู่ (Address)
    • Write Back - การเขียนข้อมูลกลับ โดยมีหน่วยจำ Register ช่วยเก็บที่อยู่ของคำสั่งต่อไป ภายหลังมีคำสั่งกระโดดบวกลบที่อยู่

    การทำงานแบบขนานในระดับคำสั่ง (ILP)

    การทำงานของหน่วยประมวลผลกลางแบบมี pipeline
    โดยการทำงานเหล่านี้ถ้าเป็นแบบพื้นฐานก็จะทำงานกันเป็นขั้นตอนเรียงตัวไป เรื่อยๆ แต่ในหลักความเป็นไปได้คือการทำงานในแต่ละส่วนนั้นค่อนข้างจะเป็นอิสระออก จากกัน จึงได้มีการจับแยกกันให้ทำงานขนานกันของแต่ละส่วนไปได้ หลักการนี้เรียกว่า pipeline เป็นการทำการประมวลผลแบบขนานในระดับการไหลของแต่ละคำสั่ง (ILP: Instruction Level Parallelism) โดยข้อมูลที่เป็นผลจากการคำนวณของชุดก่อนหน้าจะถูกส่งกลับไปให้ชุดคำสั่งที่ ตามมาในช่องทางพิเศษภายในหน่วยประมวลผลเอง
    การทำงานของหน่วยประมวลผลกลางแบบมี pipeline และเป็น superscalar
    การทำงานแบบขนานนี้สามารถทำให้มีความสามารถเพิ่มขึ้นได้อีกคือเพิ่มการทำ งานแต่ละส่วนออกเป็นส่วนที่เหมือนกันในทุกกลุ่มแต่ให้ทำงานคนละสายชุดคำสั่ง กัน วิธีการนี้เรียกว่าการทำหน่วยประมวลผลให้เป็น superscalar วิธีการนี้ทำให้มีหลายๆ ชุดคำสั่งทำงานได้ในขณะเดียวกัน โดยงานหนักของ superscalar อยู่ที่ส่วนดึงชุดคำสั่งออกมา (Dispatcher) เพราะส่วนนี้ต้องตัดสินใจได้ว่าชุดคำสั่งอันไหนสามารถทำการประมวลผลแบบขนาน ได้ หลักการนี้ก็เป็นการทำการประมวลผลแบบขนานในระดับการไหลของแต่ละคำสั่ง (ILP: Instruction Level Parallelism) เช่นกัน

    การทำงานแบบขนานในระดับกลุ่มชุดคำสั่ง (TLP)

    การทำงานของโปรแกรมคอมพิวเตอร์แต่ละโปรแกรมสามารถแบ่งตัวออกได้เป็นระดับกลุ่มชุดคำสั่ง (Thread) โดยในแต่ละกลุ่มสามารถทำงานขนานกันได้ (TLP: Thread Level Parallelism) ในระดับ2