You are on page 1of 46

dce

2009

Thiết kế vi mạch số với HDL

Chương 9: Giải thuật và Kiến trúc cho


các bộ xử lý số

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Computer Engineering 2009 Trade-off in system implementation
• General purpose, high performance processor
(GHP)
 Có thể không đạt được hiệu suất cao trong những
ứng dụng cá biệt (particular applications)
 Có thể được sử dụng không đúng mức
(underutilized) trong ứng dụng nào đó
 Có thể không cân bằng giữa tốc độ bộ xử lý và thiết
bị ngoại vi
• So sánh với ASIC:
 GHP tiêu thụ năng lượng nhiều hơn, tốn nhiều diện
tích hơn và chi phí cao hơn (tùy thuộc vào số lượng
bán ra)
 Bộ xử lý chuyên dụng (dedicated processors) sẽ có
tập lệnh và các vi lệnh (microcode) đơn giản hơn
Thiết kế vi mạch số với HDL 2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 What about ASICs
• ASICs được thiết kế để tối ưu sự thực thi của các giải
thuật cá biệt cho ứng dụng chuyên biệt nào đó
• Kiến trúc mạch của ASICs được đặc chế (customize)
trade-off giữa hiệu suất và giá thành
• ASIS Chips hy sinh tính uyển chuyển để đạt được hiệu
suất cao
• Đặc biệt thích hợp cho các ứng dụng có đường dữ liệu
song song và yêu cầu xử lý đồng thời (DSP, Data
communication,…)
• ASIC vs. FPGA: bottom-line unit cost, tuy nhiên đôi khi
cũng dựa trên giải thuật

Thiết kế vi mạch số với HDL 3


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Thiết kế một bộ xử lý như thế nào?
• High-level design: hiện thực kiến trúc sẽ thực hiện
một giải thuật cái mà có thể hoàn thành bằng bộ xử
lý thông thường (general processor)
• High-level design hoàn thành 2 công việc
 Xây dựng 1 giải thuật hiện thực một đặc tả hành vi (ví dụ:
thiết kế bộ lọc thông thấp thỏa yêu cầu hiệu suất)
 Ánh xạ giải thuật vào kiến trúc sẽ hiện thực hành vi bằng
phần cứng
• Bắt đầu với một giải thuật tính toán sẽ được hiện
thực bằng phần cứng
• Tập trung vào:
 Phá triển 1 bộ xử lý giải thuật
 Chọn lựa tradeoff các kiến trúc
 Đặc tả Verilog
 Tổng hợp

Thiết kế vi mạch số với HDL 4


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Nội dung
• Giải thuật, chương trình lặp lồng nhau (Nested-
Loop) và đồ thị dòng dữ liệu (Data Flow Graph)
• Ví dụ thiết kế
• Bộ lọc số và bộ xử lý tín hiệu số
• Khối cơ bản cho các bộ xử lý tín hiệu
• Kiến trúc pipeline
• Bộ đệm vòng
• FIFO và sự đồng bộ hóa giữa các mạch đồng bộ

Thiết kế vi mạch số với HDL 5


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Algorithms, Nested-loop program & DFG

• Một giải thuật tuần tự có thể được mô tả bằng 1


chương trình lặp lồng nhau (NLP) được viết
bằng ngôn ngữ lập trình/đặc tả (C/Verilog)
• NLP luôn luôn khả tính toán
• NLP cung cấp một đặc tả không nhập nhằn và
khả thực thi

Thiết kế vi mạch số với HDL 6


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Data-Flow graph
• DFG: đồ thị có hướng và không có vòng G(V,E) V là
tập hợp các đỉnh và E là tập hợp các cạnh
• Mỗi node viV biễu diễn cho một đơn vị chức năng
(Functional Unit - FU), nó xử lý đầu vào và sinh ra
dữ liệu ngõ ra
• 1 FU có thể thực hiện 1 hành động đơn hay 1 chuỗi
hành đồng
• 1 cạnh eijE có hướng biễu diễn dữ liệu sinh ra từ
node vi và đi vào vj
• Phụ thuộc dữ liệu giữa 2 cặp đỉnh vi và vj trên cạnh
eij nếu và chỉ nếu vj sử dụng kết quả của vi và vj sẽ
không thể hoàn thành cho đến khi vi hoàn thành
Thiết kế vi mạch số với HDL 7
CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Cần phải làm gì?
• Chuyển đổi từ DFG cho 1 giải thuật thành cấu
trúc phần cứng
 Một sự phân chia giữa đơn vị điều khiển và dòng dữ
liệu (ASMD)
• Chỉ rõ 1 cấu trúc cho dòng dữ liệu
• Thiết kế bộ điều khiển cho dòng dữ liệu của giải
thuật

Thiết kế vi mạch số với HDL 8


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Từ NLP-algorithms đến HW-architecture

• Nguyên tắc:
 Baseline architecture cho 1 processor và datapath
hiện thực cho 1 DFG  1 tập hợp các FU kết nối
theo cấu trúc của DFG

Thiết kế vi mạch số với HDL 9


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Design flow

Thiết kế vi mạch số với HDL 10


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Cải tiến baseline design
• Re-composition: cắt các FU thành 1 chuỗi các
chức năng thực thi có thứ tự  tiết kiệm
hardware
• Pipelining: thêm các thanh ghi vào trong các
đường dữ liệ để thu ngắn đường tính toán
• Replication: sử dụng nhiều bộ xử lý để tăng
performance

Thiết kế vi mạch số với HDL 11


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Ví dụ halftone image converter
• Floyd-Steinberg algorithm
 Chuyển đổi một ảnh N-dòng M-cột pixels, mỗi pixel
có n-bit, thành ảnh đen trắng
 Phân phối giá trị lỗi do làm tròn khi chuyển đổi từ n-bit
về 1 bit cho một tập con các pixel lân cận
 Dựa vào trọng số trung bình

Phân phối lỗi Nhận giá trị lỗi


Thiết kế vi mạch số với HDL 12
CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Dataflow graph

Node giả (dùng để tính cho các pixel ở bìa)


Thiết kế vi mạch số với HDL 13
CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Giải thuật
• Tại mỗi pixel (i,j), giá trị lỗi trung bình (E-av)
được tính bằng
E _ av  (w1* e[i  1, j ]  w2 * e[i  1, j  1]  w3 * e[i, j  1]  w4 * e[i  1, j 1]) / wT

 Với wi là các trọng số không âm


 wT = w1 + w2 + w3 + w4
• Giá trị pixel được tính bằng CPV  PV [i, j]  E _ av
• CPV sẽ được làm tròn thành 0 hoặc 1 bằng
CPV _ round  CPV  CPV _ thresh ? 0 : 1

 Với trường hợp n = 8 bit, CPV_max = 255,


CPV_thresh = 128
• HTPV = CPV_round và e[i,j] = CPV - HTPV
Thiết kế vi mạch số với HDL 14
CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Giải thuật (tt)
• Dãy các node trong DFG đồng dạng với dãy các pixel
• Thêm vào cột bên trái, bên phải và hàng trên cùng với các giá trị
Error là 0
• NLP in C:

Thiết kế vi mạch số với HDL 15


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Baseline design cho HPIC
• Kiến trúc đơn giản nhất
• Mô hình tập trung vào phần cứng và cấu trúc
 Cần 1 dãy 48 processor
 Thời gian xử lý phụ thuộc vào đường dài nhất
• Thiết kế khả tổng hợp thành mạch tổ hợp và
không cần bộ điều khiển

Thiết kế vi mạch số với HDL 16


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Testbench – sharp image constract

(w1, w2, w3, w4) = (2, 8, 4, 2)

Thiết kế vi mạch số với HDL 17


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Testbench – graduated image constract

(w1, w2, w3, w4) = (2, 8, 4, 2)

Thiết kế vi mạch số với HDL 18


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Baseline Design

Thiết kế vi mạch số với HDL 19


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Baseline Design (tt)

Thiết kế vi mạch số với HDL 20


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Baseline Design (tt)

Thiết kế vi mạch số với HDL 21


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Baseline Design (tt)

Thiết kế vi mạch số với HDL 22


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Kiến trúc NLP-Based cho HPIC

Thiết kế vi mạch số với HDL 23


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Kiến trúc NLP-Based cho HPIC (tt)

Thiết kế vi mạch số với HDL 24


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Kiến trúc NLP-Based cho HPIC (tt)
Level sensitive

Thiết kế vi mạch số với HDL 25


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Kiến trúc NLP-Based cho HPIC (tt)

Thiết kế vi mạch số với HDL 26


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Kiến trúc NLP-Based cho HPIC (tt)

Thiết kế vi mạch số với HDL 27


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Kiến trúc NLP-Based cho HPIC (tt)

Thiết kế vi mạch số với HDL 28


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Kiến trúc NLP-Based cho HPIC (tt)

Thiết kế vi mạch số với HDL 29


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Kiến trúc NLP-Based cho HPIC (tt)

Thiết kế vi mạch số với HDL 30


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Kiến trúc máy tuần tự cho HPIC
• Cần bộ nhớ nhưng giải phóng bus hệ thống khi
bộ xử lý đang thực thi
• Có thể thiết kế chỉ sử dụng 1 FU với bộ nhớ và
bộ điều khiển để chuyển đổi ảnh trong 48 chu kỳ
(Ảnh 6x8)
• Viết một hành vi vòng biểu diễn giải thuật các
vòng lặp lồng nhau và để bộ tổng hợp tạo tự
động kiến trúc cho mạch => Không cần hiện
thực bộ điều khiển (image_converter_1)

Thiết kế vi mạch số với HDL 31


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Kiến trúc máy tuần tự cho HPIC

Kiến trúc dãy pixel 2 chiều MxN

Thiết kế vi mạch số với HDL 32


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Chuẩn bị cho image_converter_1
• Khai báo 1 dãy các word cho các hàng pixel
• Đặt tuần tự các hàng trong các vòng lặp for bên trong một hành vi
vòng
• Thực hiện phép gán thủ tục (=)
• Viết các lệnh (statement) biểu diễn sự phụ thuộc dữ liệu sẽ được
thực thi bởi FU
• Thực hiện chuyển đổi ảnh trong 1 chu kỳ
• Dùng tín hiệu Go để điều khiển thực thi chuyển đổi ảnh
• Dùng tín hiệu Done để thông báo việc chuyển đổi hoàn tất
• Dùng tín hiệu reset để đưa hệ thống về trạng thái ban đầu

Thiết kế vi mạch số với HDL 33


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Hiện thực image_converter_1

Thiết kế vi mạch số với HDL 34


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Hiện thực image_converter_1 (tt)

Thiết kế vi mạch số với HDL 35


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Hiện thực image_converter_1 (tt)

Thiết kế vi mạch số với HDL 36


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Hiện thực image_converter_1 (tt)

Thiết kế vi mạch số với HDL 37


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Hiện thực image_converter_1 (tt)

Thiết kế vi mạch số với HDL 38


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Hiện thực image_converter_1 (tt)

Thiết kế vi mạch số với HDL 39


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Hiện thực image_converter_1 (tt)

Thiết kế vi mạch số với HDL 40


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Kiểm tra image_converter_1

Thiết kế vi mạch số với HDL 41


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Kiểm tra image_converter_1 (tt)

Thiết kế vi mạch số với HDL 42


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Kiểm tra image_converter_1 (tt)

Thiết kế vi mạch số với HDL 43


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Kiểm tra image_converter_1 (tt)

Thiết kế vi mạch số với HDL 44


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Kiểm tra image_converter_1 (tt)

Thiết kế vi mạch số với HDL 45


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering
Computer Engineering 2009 Kết quả mô phỏng
Kết quả mô phỏng cho các bộ image_convert là giống nhau

(w1, w2, w3, w4) = (2, 8, 4, 2)

Thiết kế vi mạch số với HDL 46


CuuDuongThanCong.com https://fb.com/tailieudientucntt
(c) 2009 Department of Computer Engineering

You might also like