View Single Post
Old 19-11-2009, 12:15 PM   #5
bbaacc01
Đệ tử 1 túi
 
Tham gia ngày: Apr 2009
Bài gửi: 16
:
Nhìn duới góc độ mã ASM đi, với dspic

một lệnh ghi hoặc đọc dữ liệu bình thường sẽ thực hiện tốt nhất là 1 chu kì lệnh nếu có tham số là thanh ghi. Cứ kể nó là 3 chu kì lệnh (để bù vào các cái râu ria đi).

Ở trường hợp này (Mình chỉ lấy ví dụ của anh Tuan để giải thích, không có ý gì khác, mong anh Tuan bỏ qua)
Code:
BYTE push(BYTE b) {
    if(wrHead>1023) return 0;
    fifo[wrHead] = b;
    wrHead++;
    return 1;    
}
Vì số 1023 là một số không thể so sánh trực tiếp đuợc, nên nó phải chuyển vào một thanh ghi nào đó ==> tốn 1 lệnh di chuyển
Thực hiện so sánh 1 lần ==> một lệnh so sánh
Thực hiện lệnh rẽ nhánh, trường hợp code tốt nhất thì vẫn tốn một chu kì lệnh

==> Tốn thêm 3 chu kì lệnh.

Như vậy để thực hiện việc di chuyển 1 dữ liệu chúng ta cần
6 chu kì lệnh, 3 để di chuyển, 3 để kiểm tra
hiệu suất của quá trình này là 3/(3+3) = 50%, từ 100% xuống còn 50% là nhiều rồi
bbaacc01 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn