Vector Processor



 Vector processor

Vector processor คือโปรเซสเซอร์ที่สามารถประมวลผลเวคเตอร์ (ชุดของข้อมูล) ทั้งชุดได้โดยคำสั่งเดียว นั่นคือ operand ของบางคำสั่งจะระบุถึงเวคเตอร์ เพื่อเป็นตัวอย่าง พิจารณาคำสั่งบวกต่อไปนี้
                  C = A + B
    ทั้งในเครื่องแบบธรรมดา (Scalar) และเครื่องแบบเวคเตอร์ คำสั่งนี้จะหมายความว่า "บวกข้อมูลใน A เข้ากับข้อมูลใน B แล้วนำผลลัพธ์ไปเก็บไว้ใน C" ในเครื่องแบบธรรมดา operand จะเป็นตัวเลข แต่ในเครื่องแบบเวคเตอร์ operand จะเป็นเวคเตอร์ และคำสั่งนี้จะเป็นการคำนวณ ผลบวกของข้อมูลในเวคเตอร์เป็นคู่ๆ ไป โดยมี register ในตัว processor ที่เรียกว่า vector length register เป็นตัวบอกความยาวของเวคเตอร์ที่จะถูกประมวลผล
Vectorizing Compiler จะเป็นตัวแปลภาษที่พยายามจะแปลงการวนรอบ ให้กลายมาเป็นคำสั่งแบบเวคเตอร์เพียงคำสั่งเดียว เช่นการวนรอบต่อไปนี้ ซึ่งสามารถเปลี่ยนเป็นคำสั่งที่ประมวลผลเวคเตอร์เพียงคำสั่งเดียวได้
         DO 10 I=1,N      A(I) = B(I) + C(I)      10 CONTINUE
    โปรแกรมข้างบนนี้สามารถเปลี่ยนเป็นคำสั่งที่ตั้งความยาวของเวคเตอร์เป็น N และตามด้วยคำสั่งในการบวกเวคเตอร์
การใช้คำสั่งแบบเวคเตอร์ให้ผลดีสองประการ ประการแรกคือเครื่องจะอ่านและตีความคำสั่งน้อยลง ทำให้เวลาที่เสียไปกับหน่วยควบคุมลดลงอย่างมาก และยังลดการใช้หน่วยความจำลงด้วย ผลดีประการที่สอง คือ processor จะทำงานกับแหล่งข้อมูลที่เป็นระเบียบ เมื่อคำสั่งแบบเวคเตอร์เริ่มทำงาน processor จะรู้ว่าต้องอ่านข้อมูล n คู่ที่เป็น operand ซึ่งจะถูกจัดเรียงอย่างเป็นระเบียบในหน่วยความจำ ดังนั้น processor สามารถบอกให้หน่วยความจำส่งคู่ข้อมูลมาแบบต่อเนื่อง ถ้ามีการจัดหน่วยความจำแบบ การใช้คำสั่งแบบเวคเตอร์ให้ผลดีสองประการ ประการแรกคือเครื่องจะอ่านและตีความคำสั่งน้อยลง ทำให้เวลาที่เสียไปกับหน่วยควบคุมลดลงอย่างมาก และยังลดการใช้หน่วยความจำลงด้วย ผลดีประการที่สอง คือ processor จะทำงานกับแหล่งข้อมูลที่เป็นระเบียบ เมื่อคำสั่งแบบเวคเตอร์เริ่มทำงาน processor จะรู้ว่าต้องอ่านข้อมูล n คู่ที่เป็น operand ซึ่งจะถูกจัดเรียงอย่างเป็นระเบียบในหน่วยความจำ ดังนั้น processor สามารถบอกให้หน่วยความจำส่งคู่ข้อมูลมาแบบต่อเนื่อง ถ้ามีการจัดหน่วยความจำแบบ interleave (เป็นการจัดหน่วยความจำแบบแบ่งหน่วยความจำเป็นชุดๆ ตำแหน่งหน่วยความจำที่อยู่ติดกัน จะอยู่บนหน่วยความจำคนละชุดกัน) หน่วยความจำจะสามารถส่งข้อมูลไปให้ processor ประมวลผลได้ในอัตรา 1 คู่ต่อสัญญาณนาฬิกา 1 ลูก แต่ถ้าไม่มีการจักหน่วยความจำแบบ interleave หรือไม่มีวิธีอื่นๆ ในการส่ง operand ให้กับ processor อย่างรวดเร็วแล้ว ประโยชน์ในการประมวลผลเวคเตอร์ทั้งชุดโดยใช้คำสั่งเดียวจะลดลงอย่างมาก
Vector Processor ถูกจัดประเภทตามวิธีการเรียกใช้ operand ในระบบแบบ memory-to-memory, operand จะถูกอ่านมาจากหน่วยความจำสู่หน่วยประมวลผลใน processor ผลลัพธ์จะถูกส่งกลับไปยังหน่วยความจำอย่างต่อเนื่อง ในขณะที่ทำการประมวลผล ส่วนในระบบแบบ register-to-register, operand จะถูกอ่านเข้ามาเก็บไว้ในชุดของ vector register ซึ่งสามารถเก็บเวคเตอร์ได้ส่วนหนึ่ง (เช่นไม่เกิน 64 ข้อมูล) การประมวลผลจะทำโดยอ่าน operand มาจาก vector register และผลลัพธ์ก็จะถูกส่งกลับไปยัง vector register เช่นกัน