Категории: Все - pipeline - execution - memory - cpu

по Pakapol Premprasopchok 1 года назад

74

CPU

The central processing unit (CPU) functions as the brain of a computing system, managing various tasks by executing instructions stored in memory. It operates through a series of cycles, including fetching instructions, decoding them, executing commands, and writing back results.

CPU

CPU

Memory Hierarchy

Victual Machine
Problem

ใช้ Pagetable ในการ เข้าถึงข้อมูลถึงสองรอบ

Preformance ไม่ดี

มี Page Faults เป็น VM เก็บไว้ชื่อ swap space
สร้างหน่วยความจำเสมือนได้
สร้างคอมเสมือน แบบ NOX
Cache Hierarchy
Fully assoistive

เป็นแบบใส่ช่องไหนก็ได้เราเลือกเอง ทำเหมือน 2 way อิสระมาก

2 way assositive

คือการที่ Cache ช่องนึงมีสองช่อง 00,01 โดยดูจากเลขท้าย Valid bit ว่าเป็น 0 หรือ 1 ด้วยการ Random

ใช้ Direct Mapping ส่งจาก RAM -> Cache

ใช้วิธีการจับคู่ข้อมูล โดน/ไม่โดน โดยการเช็ค 2 อย่างนี้

Valid bit = ข้อมูลใน Cache เป็นตัวที่ต้องการมั้ย

Tags = เลข สองตัวหน้า _ _ บอกว่ามาจากไหนของแรม เช็คว่าถูกมั้ย

เลเวลในการเก็บหว่าง Processer หับ Main Mem

มี Pagetable เก็บการทำงานของโปรแกรง

Performance
Miss penalty

เวลาที่เสียไปกับการลงไป หาข้อมูลชั้นล่างๆ ของมัน (ยิ่งเยอะ ยิ่งเสียเวลาเยอะ)

hit time

เวลาที่เสียไปกับการหาข้อมูลในชั้นเดียว

miss rate

หาข้อมูลไม่เจอในชั้นแรก และต้องลงไปอีกชั้น

Hit rate

hit = หาข้อมูลเจอในชั้นแรก

ความลึก ความหลายชั้น

ยิ่งไกล ยิ่งห่าง

เก็บได้มากขึ้นเรื่อยๆ ลงไปช้าขึ้นเรื่อยๆ

ยิ่งใกล้ Pocessor

เก็บได้น้อย ไวกว่าชั้นล่าง แพง

การทำงาน
Special = ใช้ตัวที่เกี่ยวกับการเก็บข้อมูล เหมือนมันเช่น Array,List,Collection,heep
Temprial = ทำซ้ำๆ เช่น Loop

Parrallel Processer

เป็นCPU ในปัจจุบัน ใช้แรมในการประมวลผลด้วย
GPU
พัฒนาจากวงการเกม

GPU = Muti-Tread SIMD แต่ได้ result แบบ MIMD ทำให้มี OpenCL , Vulcan

Nvdia มี CUDA สามารถ เขียน Thread แบบ Low Level เลย

Hardware Muti-Tread
จำลอง CPU เสมือนกันสองตัว และสลับผลัดกันใช้

การสลับ

SMP

เก็บขึ้น Cloud ใช้เก็บ Position ของ

NUMA

เหมือนกันแต่ ต้อง Request

UMA

ส่ง Address

Physical Mem

แชร์กันใช้ได้ทีเดียว

SMT

ตัวไหนพร้อมมาทำเลย

หยาบ

สลับตอนเกิด Cache Miss

ละเอียด

บังคับสลับกับ Thread ทุกๆ Clock cycle

Process

ทำสลับกับ OS ทำงานช้า

Thread

มี Counter บอกทำงานถึงไหน สลับกันใน Core

ประเภท
SPMD

Single Program Muti Data

SIMD

คำสั่งเดียว ใช้ Data Stream หลายตัว (ใช้ Vector register ให้คำสั่งต่อเนื่อง)

MIMD

Muti / Cache Pallarial ex . Quantum Comp

คล้ายกับ SSISD But Varity ใช้ Vector กับ Scalar

Scalar

เรียกทีละบรรทัด

ไม่รู้เลยโง่

Vector (ดีกว่า)

เรียกครั้งเดียว

รู้ Pattern For Array

ใช้คำสั่งของมันจะไม่เจอ Branch (if/else) = ไม่เจอ Control Hazard

SSISD

Single อันแรกสุด "ใช้คำสั่ง 1 คำสั่ง แต่ทำหลายอย่าง"

ไม่เกิด Cache miss ใช้ดีกับ For/Data Level Parallax ไม่ดีกับ switch / case

Single Processer

Central Processer Unit
Machine Cycle (Pipeline)

Pipeline Hazard

Control

เกิดจาก Check เงื่อนไขทั้งหมด แล้วไม่รู้คำสั่งถัดไป

แก้ไม่ได้ เกิดบ่อยแต่ถ้าจะแก้ คือ Branch Prediction

Final State

เดาจากประวัติ และประมาณ %

Data

เป็นเพราะ load-use

แก้ด้วย Bubble = ปล่อยมันไป

เป็นเพราะใช้คำสั่งก่อนหน้า มาเป็นผลลัพท์ในคำสั่งต่อไป

แก้ด้วย Forwarding / by Passing

Structural

เป็นเพราะ Hardware

ระบบการทำงาน

5.Mem

เขียนกลับไปใน Memory

4.writeback

เขียนกลับไปใน Register

3.excute

ประมวลผลข้อมูล

2.Decode

ถอดคำสั่งว่าต้องใช้คำสั่งอะไร

1.Fetch

ดึง Address จาก Memory

ชุดคำสั่ง

ข้อมูลการคำนวน

Logic Design Convention

1 รอบ & Cycle

Datapath

Data Memory Unit

Signal

ส่งคลื่คำสั่งมาบอก Memory Write

Memory Write

ตัวเขียนข้อมูล

เก็บข้อมูลคำนวนแล้วใน ชุดคำสั่ง ข้อมูลต่างๆ

Sign-ex

แปลงข้อมูลขยายให้เป็น 32 bit เท่ากัน

ALU

คำนวนทั้งตัวตัวเลขและตรรกะ

Branch

Not Taken = ไม่จริง ทำงานบรรทัดถัดไป

Taken = จริง

ALU Operand

สั่งให้คำนวนอะไร

Register File

Register Write

คนคุม

ดึงข้อมูลมา อ่าน เขียน จัดเก็บ ข้อมูลชั่วคราว

หน่วยเก็บคำสั่งและข้อมูล

ประมวลผลผ่าน Datapath

3.Adder *แค่บวก

ทำการบวก

2. Program Counter

เก็บ Address ถัดไป แล้วส่งคำสั่ง

1. เก็บชุดคำสั่ง

เก็บคำสั่งรอการใช้และส่ง Address

Concept

เก็บ Addres

อ่านคำสั่งว่าใช้ register อะไร ประเภทไหน

ทำงานตาม Clock Cycle

ดึง -> ถอด -> คำนวน -> เก็บ