Bộ phận dấu phẩy động – Floating Point Unit

Một phần của tài liệu Phân tích kiến trúc, nguyên lí làm việc của bộ vi xử lí AMD k8 (Trang 27 - 28)

Bộ phận Scheduler đơn vị dấu phẩy động (FPU) của các bộ xử lý K8 được tách riêng khỏi bộ phận Scheduler đơn vị số nguyên và có thiết kế khác đi một chút. Bộ nhớ đệm của Scheduler có thể cung cấp tối đa 12 nhóm, mỗi nhóm gồm 3 MOP (theo lý thuyết là 36 phép tính dấu phẩy động). Khác với Bộ phận số nguyên có các Pipe đối xứng, FPU gồm có ba phần khác nhau: FADD cho phép cộng dấu phảy động , FMUL

cho phép nhân dấu phảy động và FMISC (còn được gọi là FSTORE) cho các phép tính lưu trong bộ nhớ và phép tính bổ trợ. Do đó, bộ nhớ đệm Scheduler không cố định rõ các MOP vào từng nhóm trong một khác nhau ( theo hình dưới )

Hình 2.4: Đơn vị dấu phẩy động

Mỗi xung nhịp, K8 có thể gửi một phép tính đến đơn vị dấu phẩy động để xử lý. Bộ xử lý K8 sử dụng đơn vị dấu phẩy động 80 bit. Tại phần giải mã, các lệnh vector SSE 128 bit sẽ được tách làm hai MOP xử lý hai nửa 64 bit của một toán hạng 128 bit. Các MOP này sẽ được xử lý lần lượt tại các xung nhịp khác nhau. Điều này không chỉ làm chậm tiến độ xử lý lệnh vector, mà còn làm giảm kích thước của bộ nhớ đệm Scheduler FPU xuống một nửa, và do đó giảm hiệu quả việc xử lý lệnh không theo thứ tự.

Bộ xử lý K8 thực hiện tải những lệnh SSE bằng cách sử dụng Bộ phận FSTORE. Một mặt, nó không cho phép xử lý cùng lúc bất kỳ lệnh nào khác cần sử dụng Bộ phận này. Mặt khác, nó chỉ cho phép một lần tải lệnh cùng lúc. K8 chỉ có thể đọc song song hai lệnh cùng lúc nếu một trong số các lệnh đó kết hợp một phép tính bộ nhớ và một phép tính dữ liệu (còn gọi là lệnh Load-Execute), ví dụ như ADDPS xmm1, [esi].

Một phần của tài liệu Phân tích kiến trúc, nguyên lí làm việc của bộ vi xử lí AMD k8 (Trang 27 - 28)