1. Trang chủ
  2. » Giáo án - Bài giảng

tài liệu ôn tập môn Lập trình DSP

15 603 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 400,28 KB

Nội dung

Câu hỏi 4: Phân tích nhu cầu cần sử dụng bộ nhớ khi thực hiện bộ lọc FIR trên bộ xử lý DSP Khái niệm delay line, tap DSP xử lý các luồng dữ liệu được tối ưu hóa để cung cấp hiệu suất cao

Trang 1

Câu hỏi môn “Lập trình DSP”

<I>Phần lý thuyết:

1. Phần DSP cơ bản:

Câu hỏi 1: Hãy phân tích (trình bày định nghĩa, ví dụ, phân tích ưu và nhược điểm) các phương pháp tăng độ chính xác khi chuyển đổi 1 giá trị số phần lẻ 8 bít từ độ chính xác cao về độ chính xác thấp (cut, rounding, to-nearest, convergent) (Page 40)

*) Định nghĩa

Việc thực hiện các các phép toán như nhân, tích lũy, hay một số các phép toán số học khác có xu hướng tăng số lượng bit cần thiết, để biểu diễn cho kết quả số học mà không mất đi độ chính xác ta thực hiện việc làm tròn

Có 2 phương pháp làm tròn: là CUT và ROUNDING

*) CUT: là phương pháp cắt các bit thừa, các bít có ý nghĩa ít nhất khi ghi từ bộ tích lũy và bộ nhớ

Ví dụ: Bộ tích lũy có độ phân dải là 16bit

Bộ nhớ có độ phân giải là 8 bit Khi cắt sẽ cắt 8 bit thấp của giá trị trong bộ tích lũy -> kết quả được đưa vào bộ nhớ

Với 1.9 ta sẽ bỏ số 9 đằng sau dấu phẩy => Kết quả là 1 thay vì làm tròn lên bằng 2

Lưu ý các giá trị bị cắt ngắn luôn luôn nhỏ hơn hoặc bằng giá trị gốc

+) Nhược điểm: Sai số lớn, thiếu chính xác

+) Ưu điểm: Giảm các lỗi về số học, thuật toán đơn giản, nhanh

*) ROUNDING:

- Round-to-nearest: được gọi là kỹ thuật làm tròn tới số gần nhất, là phương pháp làm tròn đến giá trị gần với giá trị đầu ra nhất khi ghi từ bộ tích lũy sang bộ nhớ

Đây là loại thường được sử dụng trong toán học hàng ngày và nó là phương pháp làm tròn được cung cấp bởi hầu hết các điểm cố định của bộ xử lý DSP

CUT(x+Δ/2) -> x_new

Ví dụ: CUT(1.9 + Δ/2) = CUT(1.9 + 0.5) = CUT (2.4) -> x_new = 2

CUT(1.2 + Δ/2) = CUT(1.2 + 0.5) = CUT (1.7) -> x_new = 1

+) Nhược điểm: Với phương pháp này con số được làm tròn đến giá trị gần nhất được biểu diễn trong định dạng ở đầu ra (giảm độ chính xác)

Với con số nằm ở giữa hai giá trị đầu ra gần nhất thì luôn được làm tròn lên giá trị đầu ra ở mức cao hơn Không chính xác ở mức giữa

+) Ưu điểm: đơn giản, dễ thực hiện, lập trình tương đối dễ

- Convergent Rounding: là phương pháp làm tròn hội tụ để khắc phục việc sai lệch, hơi phức tạp hơn so với phương pháp làm tròn tới số gần nhất Trong phương pháp này khi một số nằm ở giữa hai giá trị đầu

ra gần nhất, nó có thể làm tròn lên hoặc làm tròn xuống Hướng làm tròn phụ thuộc vào “giá trị bit của

số đó là ở vị trí nào sẽ trở thành bit có ý nghĩa (LSB) của từ đầu ra” Nếu bit này là một số 0, thì sẽ được làm tròn xuống (trong hướng tiêu cực), nếu bit này là 1 thì số đó sẽ được làm tròn lên (trong hướng tích cực) Làm tròn hội tụ được so sánh với làm tròn đến số gần nhất theo hình dưới

Trang 2

Hai phương pháp làm tròn hoạt động giống nhau ngoại trừ trường hợp số được làm tròn nằm giữa hai giá trị đầu ra gần nhất

Đối với phương pháp Rounding to nearest là đưa toán hạng A là một thanh ghi 8 bit về thanh ghi toán hạng B là thanh ghi 4 bít bằng cách làm tròn tới số gần nhất

Phương pháp Convergent Rounding:

Với If a3:a0 >1000

b3:b0 = a7:a4 + a3

và If a3:a0 <1000

b3:b0 = a7:a4 + a3

 Là phương pháp làm tròn tương tự như Rounding-to-nearest

Trường hợp If a3:a0 =1000

b3:b0 = a7:a4 + a4 Trong trường hợp này quyết định làm tròn lên hay xuống phụ thuộc vào bit a4, các bít của toán hạng ở

vị trí đó sẽ trở thành LSB của kết quả đầu ra Nếu a4 là 1, kết quả được làm tròn trong

hướng tích cực; Nếu a4 là 0, kết quả sẽ được làm tròn theo hướng tiêu cực

Trang 3

Câu hỏi 2: Phân tích cấu trúc và mô tả hoạt động của bộ xử lý DSP5600x

- Motorola DSP5600x Dấu chấm tĩnh, 24 bits

- Multiplier: bộ nhân là rất quan trọng trong tất cả các ứng dụng của DSP

- Thanh ghi tích lũy: lưu dữ liệu và kết quả của phép nhân và các phép tính khác

- ALU: thực hiện các phép toán cơ bản như cộng, trừ, nhân, tăng, giảm, and,…

- Shifter: thực hiện Scaling tín hiệu để tránh hiện tượng tràn số

- DSP56000 được tạo thành từ một bộ chip vi xử lí tín hiệu số 24-bit, hiệu suất cao và một vùng

mở rộng Trong vùng mở rộng, chip có thể trợ giúp cấu hình cho các thiết bị bộ nhớ và ngoại vi thay đổi tùy theo loại trong họ

- Họ xử lí DSP5600x bao gồm bộ phận chính xử lí tín hiệu số tương thích vơí họ 56000, được nạp bằng RAM chương trình trên chip, có 2 RAM dữ liệu độc lập, 2 ROM dữ liệu với các bảng sine, µ-law va A-law DSP56002 chứa bộ giao tiếp truyền thông nối tiếp, giao tiếp chủ song song, bộ đếm thời gian/sự kiện, bộ vòng khóa pha, một cổng mô phỏng trên chip

- Bộ xử lí DSP56002 cung cấp các đặc trưng phong phú trong việc xử lí tín hiệu số

Trang 4

Câu hỏi 3: Phân tích cấu trúc và mô tả hoạt động của bộ xử lý AT&T DSP 3210 32 bit

Luồng dữ liệu của bộ xử lý DSP dấu chấm động (Floating-point Data path) tương tự như trong bộ xử lý DSP dấu chấm tĩnh, nhưng có một số khía cạnh khác nhau Hình trên là minh họa của luồng dữ liệu dấu chấm động điển hình là AT&T DSP 3210 32-bit, bộ xử lý dấu chấm động

Dấu chấm động bao gồm 3 phần: phần trị số, phần cơ số, phần mũ

Hai bộ dồn kênh hoạt động giống bộ đệm dữ liệu

Data Unit 1 DU1 Data Unit 2 DU2 Điểm khác biệt với dấu chấm tĩnh là nó ko có Scaling

Trang 5

Câu hỏi 4: Phân tích nhu cầu cần sử dụng bộ nhớ khi thực hiện bộ lọc FIR trên bộ xử lý DSP (Khái

niệm delay line, tap)

DSP xử lý các luồng dữ liệu được tối ưu hóa để cung cấp hiệu suất cao trên một số thuật toán số học chuyên sâu Tuy nhiên, một nguồn dữ liệu tốt chỉ là một phần của một bộ xử lý hiệu suất cao Để giữ cho luồng dữ liệu hoạt động và cung cấp dữ liệu và kết quả lưu trữ , xử lý DSP đòi hỏi khả năng di chuyển một lượng lớn dữ liệu đến và từ bộ nhớ một cách nhanh chóng Vì vậy tổ chức bộ nhớ và kết nối của nó với luồng dữ liệu của bộ xử lý là những yếu tố quan trọng trong việc xác định hiệu suất xử lý Để hiểu được nhu cầu cho băng thông bộ nhớ lớn trong DSP ta xem xét về nhu cầu cần sử dụng bộ nhớ khi thực hiện bộ lọc FIR, đây là ví dụ đơn giản và rõ ràng nhất cho thấy sự cần thiết của một số tính năng đặc biết của bộ xử lý DSP được mô tả trong hình dưới

Yk = xk.C1 + xk-1.C2 + … + x2.CN-1 + x1.CN

Giá trị x(n) được lưu vào trong bộ nhớ RAM

Khi tính toán giá trị của x(n) được đưa vào thanh ghi, để có được giá trị xk-1 phải qua bộ D

Bộ D là lệnh gán dữ liệu bằng phần mềm

Một đường của các giá trị x1 đến xk sử dụng bộ D được gọi là delayline

Một delayline chứa vùng nhớ giá trị đầu vào x(n) phục vụ cho việc tính giá trị đầu ra của bộ lọc

Bộ lọc FIR được xây dựng từ một loạt các Tap Mỗi Tap bao gồm phép nhân giá trị với các hệ số và được lưu vào trong RAM cộng với giá trị tại thanh ghi tích lũy -> giá trị vào chính nó

Vậy để tính xk bộ FIR cần k Tap

Các bước thực hiện trong 1 Tap:

- Nhận lệnh nhân tích lũy

- Đọc dữ liệu thích hợp từ delayline

- Đọc hệ số tương ứng

Trang 6

- Ghi dữ liệu vào vị trí tiếp theo trong delayline để dịch dữ liệu

trong delayline

 Yêu cầu cần thực hiên 1 Tap trong một chu kỳ DSP phải có khả

năng truy nhập bộ nhớ 4 lần/1 chu kỳ

Câu hỏi 5: Phân tích các loại kiến trúc bộ nhớ hỗ trợ cho các giải

thuật DSP: Kiến trúc Von-Newman, Harward sửa đổi, bộ nhớ đa

truy nhập, các thao tác ghi bộ nhớ đặc biệt (Không có hình vẽ trong

đề thi)

*) Kiến trúc Von-Newman : Dữ liệu và chương trình được lưu chung vào

một bộ nhớ Chỉ truy nhập bộ nhớ 1 lần/ 1 chu kỳ Kiến trúc Von

Neumann là kiến trúc đơn giản nhất của máy tính, có một CPU, một ko gian nhớ, một đường bus dữ liệu

và một đường bus địa chỉ CPU gửi tín hiệu địa chỉ ra bus địa chỉ sau đó bus địa gửi gửi giá trị địa chỉ ra

bộ nhớ, ở bộ nhớ nó xác định được đc tại bộ nhớ, có 2 thao tác đọc/ghi Thao tác đọc là dữ liệu được lấy

từ bộ nhớ đưa vào bus dl sau đó đưa vào CPU, CPU xử lý Thao tác ghi: DL sau khi được tính toán xong CPU sẽ đưa vào bus DL và bộ nhớ sẽ ghi dl vào ô nhớ có địa chỉ mà đã xác định trước đó

Bộ xử lý chỉ có thể truy nhập (đọc/ghi) vào bộ nhớ 1 lần/1chu kỳ

Truy cập bộ nhớ rất tốn thời gian -> cần phải cải thiện Kiến trúc này ít khi được dùng cho các giải thuật DSP

*) Kiến trúc Harward sửa đổi

Phát triển các biến thể của cấu trúc bộ nhớ Von Neumann

Kiến trúc Harward sử dung ba băng bộ nhớ:

- Một băng bộ nhớ chương trình

- Hai băng bộ nhớ dữ liệu gọi là X và Y

Trang 7

Lợi thế: 3 bộ nhớ có thể được truy nhập trong một chu kỳ:

Truy nhập bộ nhớ chương trình

Truy nhập bộ nhớ dữ liệu X (ghi)

Truy nhập bộ nhớ dữ liệu Y (đọc)

CPU có thể truy nhập 2 băng của bộ nhớ bằng cách dùng 2 tập bus độc lập

Trong trường hợp FIR filter cần truy nhập 4 lần/1chu kỳ thì chỉ cần bộ xử lý hỗ trợ truy nhập 3 bộ nhớ / chu kỳ mà không cần bộ nhớ thứ 4 với kỹ thuật Modulo Addressing

*) Bộ nhớ đa truy nhập

Kiến trúc Harward với 2 cổng đôi Bus dữ liệu cho bộ nhớ A và chỉ một cổng bus cho bộ nhớ chương trình B

Với kiến trúc này CPU truy cập bộ nhớ sử dụng 3 bus riêng biệt CPU truy cập bộ nhớ dữ liệu A bằng 2 bus, bộ nhớ chương trình B bằng bus còn lại

Bộ nhớ đa truy cập sử dụng các bộ nhớ tốc độ nhanh, onchip, sử dụng các bộ nhớ nhiều cổng Một số bộ vi xử lý cho phép thao tác ghi vào bộ nhớ dữ liệu thực hiện song song với thao tác đọc lệnh và dữ liệu

Trang 8

Câu hỏi 6: Hãy trình bày các phương pháp giảm số lần truy nhập bộ nhớ trong các giải thuật DSP: bộ đệm lặp, cache (1 secto và nhiều secto), cách tiếp cận thuật toán

Một vài bộ xử lý DSP kết hợp với bộ đệm chương trình Cache program Đây là 1 bộ nhớ bên trong bộ

xử lý được sử dụng để lưu trữ tạm thời chương trình Có 3 loại cache chương trình: Bộ đệm lặp, cache 1 sector và cache nhiều sector

Để sử dụng cache như thế nào ta xem xét ví dụ sau

Ví dụ:

Bộ đệm lặp là bộ đệm chỉ sử dụng với lệnh lặp khi các lệnh lặp được thực thi thì lần đầu tiên các data được đưa vào bộ đệm lặp, các lệnh tiếp theo không cần phải truy cập bộ nhớ của hệ thống làm cho hệ thống chạy nhanh hơn

Cache 1 sector: Đây là cache lưu trữ các lệnh được sử dụng nhiều nhất trong 1 time gần nhất, hạn chế của loại cache này là chỉ được sử dụng trong 1 phạm vi địa chỉ của chương trình

Ví dụ khi 1 chương trình điều khiển luồng như lệnh BRANCH, INTERRUT truy cập tới 1 ô nhớ không nằm trong cache thì các nội dung trước đó của cache bị mất đi và ko dc sử dụng

Cache nhiều sector: Chức năng loại cache này giống cache 1 sector nhưng nó có thể lưu trữ được nhiều đoạn chương trình khác nhau, khi bộ xử lý yêu cầu môt lệnh của bộ nhớ ngoài thì đầu tiên nó sẽ tìm trong cache, có 2 trường hợp xảy ra – cache hit: lệnh đã có sẵn trong cache, tức là lệnh đã có sẵn trong 1 trong số các sector đó

Cache miss: Lệnh ko có sẵn trong các sector -> thay sector

Thay sector có 2 cách: Phương pháp tự dộng LRU: (Thay thế sector được sử dụng trong 1 time)

Pphap thủ công: Dùng lệnh đặc biệt hoặc cac bit có cấu hình đặc biệt cho phép chuwowg trình đóng nội dung của cache tại 1 vài thời điểm khi chương trình đang thực thi hoạc để làm

ẩn toàn bộ cache

Cách tiếp cận thuật toán: Sử dụng tính địa phương của dữ liệu để giảm lần số truy cập bộ nhớ cần thiết Cách thực hiện bằng phần mềm

Câu 7 Định nghĩa và phân tích các nguyên nhân phát sinh trạng thái đợi trong bộ xử lý DSP

- Định nghĩa: Trạng thái đợi là trạng thái bộ xử lý đang đợi truy cập bộ nhớ

- Nguyên nhân phát sinh trạng thái đợi: 03 nguyên nhân

+ Xung đột bộ nhớ

+ Bộ nhớ chậm

+ Chia sẻ bus

- Phân tích các nguyên nhân

+ Xung đột bộ nhớ

Trạng thái đợi do xung đột xảy ra khi bộ vi xử lý cố gắng thực hiện nhiều truy cập đồng thời đến

một bộ nhớ (bộ nhớ không hỗ trợ nhiều truy cập) Ví dụ, khi một bank nhớ đơn của bộ nhớ đơn truy cập

chứa cả các từ và dữ liệu lệnh

Vì hầu hết các bộ xử lý DSP có cấu trúc đường ống (pipeline), việc thực hiện một lệnh đơn lẻ thường được trải rộng trên một số chu kỳ lệnh Do đó, các trạng thái đợi do xung đột có thể xảy ra ngay

Trang 9

cả khi thực hiện một lệnh đơn, không đòi hỏi nhiều truy cập đến một băng nhớ Bởi vì các lệnh liền kề

có thể yêu cầu truy cập bộ nhớ cùng một lúc Hầu như tất cả các bộ vi xử lý nhận ra nhu cầu cho các trạng thái đợi xung đột và tự động chèn số lượng tối thiểu trạng thái đợi xung đột cần thiết Trừ một số

bộ xử lý họ DSP16xx AT&T (DSP1604, DSP1605 và DSP1616) Các bộ xử lý này cố gắng để lấy các từ

(words) từ cả bộ nhớ dữ liệu và chương trình bên ngoài trong 1 chu kỳ lệnh, kết quả là lấy được từ (word) trong chương trình chính xác, còn từ (word) dữ liệu lấy được là không hợp lệ

+ Bộ nhớ chậm

Hầu hết các bộ vi xử lý DSP đều chứa 1 hoặc nhiều băng nhớ nhỏ truy cập nhanh on-chip RAM và /hoặc ROM mà cung cấp 1 hoặc nhiều truy cập trên mỗi chu kỳ lệnh

Trong nhiều trường hợp, có thể mở rộng bộ nhớ bằng cách sử dụng bộ nhớ off-chip Tuy nhiên bộ nhớ off-chip chậm trong việc hỗ trợ truy cập bộ nhớ đầy đủ trong vòng một 1 kỳ lệnh Điều này sẽ tiết kiệm chi phí vì các chip nhớ tốc độ chậm hơn là rẻ hơn so với những chip nhanh hơn Trong các trường

hợp này, bộ vi xử lý được cấu hình để chèn các trạng thái đợi lập trình được ( programmed wait states)

trong quá trình truy cập bộ nhớ ngoài Các trạng thái đợi được cấu hình bởi các nhà lập trình để làm chậm việc truy cập bộ nhớ của bộ vi xử lý cho phù hợp với bộ nhớ tốc độ chậm Một số bộ vi xử lý có thể được lập trình để sử dụng các số trạng thái đợi được lập trình khác nhau khi truy cập vào các vùng khác nhau của bộ nhớ off-chip Vì vậy sự kết hợp cho hiệu quả chi phí giữa bộ nhớ tốc chậm hơn và nhanh hơn có thể được sử dụng

+ Chia sẻ bus

Một số hệ thống không thể dự đoán trước chính xác có bao nhiêu trạng thái đợi yêu cầu truy cập

bộ nhớ ngoài (externally requested wait states) Ví dụ khi các bộ xử lý chia sẻ một bus nhớ bên ngoài

cho 1 hoặc nhiều bộ xử lý khác, bộ vi xử lý đó có thể sẽ phải đợi bộ xử lý khác không sử dụng bus trước khi thực hiện truy cập bộ nhớ của mình Tương tự nếu bộ nhớ động (DRAM) được sử dụng, bộ vi xử lý

có thể phải đợi trong khi bộ điều khiển DRAM làm tươi DRAM Trong các trường hợp này, bộ vi xử lý phải có khả năng tự động chèn các trạng thái đợi yêu cầu bên ngoài đến khi nó nhận được một tín hiệu

từ 1 bus ngoài hoặc bộ điều khiển bộ nhớ ngoài thông báo bộ nhớ ngoài sẵn sàng hoàn tất việc truy cập

Ví dụ, bộ vi xử lý TMS320C5x của Texas Instruments cung cấp một pin READY được sử dụng bởi phần cứng bên ngoài để báo hiệu cho bộ vi xử lý phải đợi truy cập bên ngoài.

Độ dài một trạng thái đợi của 1 bộ vi xử lý phụ thuộc vào độ dài một chu kỳ lệnh của bộ vi xử lý đó Độ

dài trạng thái đợi từ ¼ -> 1 chu kỳ lệnh (như DSP32C AT & T có độ dài trạng thái đợi = ¼ chu kỳ lệnh) Trạng thái đợi ngắn hơn cho phép hệ thống hoạt động nhanh hơn, vì thời gian trễ (từ thời điểm bộ nhớ ngoài sẵn sàng truy cập đến thời điểm trạng thái đợi kết thúc và bộ vi xử lý bắt đầu truy cập) sẽ ngắn hơn.

Trang 10

Câu số 8: Trình bày cơ chế hỗ trợ đa bộ xử lý DSP trong việc ghép nối với bộ nhớ ngoài và hãy lấy ví dụ cụ thể cho bộ xử lý TMS 320C5x?

Cung cấp nhiều cổng bộ nhớ bên ngoài:

Cung cấp cơ chế để đàm phán quyền điều khiển bus (bus arbitration)

Hệ thống chia sẻ bus: 2 chân của bộ xử lý bus:

+ Yêu cầu bus: Bộ trọng tài bus bên ngoài (một bộ xử lý khác or phần cứng khác) có yêu cầu sẽ gửi tín hiệu bus request tới bộ xử lý DSP

+ Nhường bus: Bộ xử lý DSP sẽ hoàn thành các truy cập bộ nhớ đang thực hiện, từ bỏ bus và thông báo lại bằng tín hiệu bus grant

Ví dụ cho bộ xử lý TMS 320C5x:

Cho phép thiết bị bên ngoài truy nhập bộ nhớ on-chip của bộ xử lý:

HOLD’

HLDA’

BR’

IAQ’

HOLD tương đương với bus request

HOLDA tương đương với bus grant

Để thực hiện thiết bị ngoài truy nhập bộ nhớ on-chip trên chính nó, thiết bị ngoài trước tiên xác nhân thông tin đầu vào HOLD Khi bộ xử lý trả lời bang xác nhận HOLDA, thì bộ nhớ ngoài xác nhân

BR chỉ dẫn rằng nó muốn truy nhập bộ nhớ on-chip trên TMS320C5x TMS320C5x trả lời bởi xác nhân IAQ Bộ nhớ ngoài có thể đọc và ghi trên bộ nhớ on-chip TMS320C5x bời trình đường điều khiển địa chỉ, dữ liệu, đọc và ghi TMS320C5x Sauk hi hoàn thành thiết bị ngoài xẽ hủy xác nhận HOLD và BR Việc này cho phép tạo nhiều hệ thống đa xử lý mà không yêu cầu chia sẻ bộ nhớ cho việc truyền thông giữa các bộ xử lý

Thiết bị nhớ ngoài TMS 320C5x

Bộ nhớ

on-chip

Ngày đăng: 21/07/2015, 11:03

TỪ KHÓA LIÊN QUAN

w