Các thanh ghi trong MicroBlaze

Một phần của tài liệu Nghiên cứu và triển khai hệ vi xử lý trên cơ sở lõi xử lý MicroBlaze, thử nghiệm ứng dụng trên FPGA (Trang 35 - 38)

MicroBlaze là bộ xử lý có cấu trúc tập lệnh trực giao. Tùy thuộc vào việc lựa chọn cấu hình cho bộ xử lý, bộ xử lý này có 32 thanh ghi mục đích chung (General Purpose Register) 32 bit và có khả năng cấu hình lên tới 18 thanh ghi mục đích đặc biệt (Special Purpose Register) 32 bit.

a) Các thanh ghi mục đích chung

Các thanh ghi mục đích chung của MicroBalze đƣợc đánh số từ R0 đến R31 và đƣợc thiết lập với giá trị ban đầu là 0x00000000. Mô tả chức năng của các bit trong thanh ghi này nhƣ sau:

Bit Tên thanh ghi Mô tả

0:31 R0 Luôn có giá trị „0‟. Mọi thứ ghi vào thanh ghi này đều bị hủy bỏ.

0:31 R1–R13 Các thanh ghi mục đích chung 32 bit.

0:31 R14 Thanh ghi này dùng để lƣu giữ địa chỉ trả về cho các ngắt (interrupts)

0:31 R15 Thanh ghi này đƣợc sử dụng để lƣu giữ địa chỉ trả về của các véc-tơ ngƣời dùng (user vectors).

0:31 R16 Thanh ghi này dùng để lƣu giữ địa chỉ trả về của các lệnh breaks.

0:31 R17 Nếu bộ xử lý đƣợc cấu hình để cung cấp các ngoại lệ phần cứng thì thanh ghi này đƣợc sử dụng để tải cùng với địa chỉ lệnh gây ra ngoại lệ phần cứng đó, nếu không nó là một thanh ghi mục đích chung.

0:31 R18–R31 Các thanh ghi mục đích chung 32 bit.

b) Các thanh ghi mục đích đặc biệt

- Thanh ghi bộ đếm chƣơng trình PC (Program counter): Đây là thanh ghi 32 bit lƣu giữ địa chỉ của lệnh đang đƣợc thực hiện. Có thể đọc thanh ghi này bằng lệnh chuyển dữ liệu từ thanh ghi mục đích đặc biệt (lệnh MFS) nhƣng không thể ghi đƣợc bằng lệnh chuyển dữ liệu tới thanh ghi mục đích đặc biệt (lệnh MTS). Khi sử dụng lệnh MFS, thanh ghi này đƣợc chỉ định bằng cách thiết lập Sa=0x0000.

- Thanh ghi trạng thái máy MSR (Machine Status Register): bao gồm các bit điều khiển và các bit trạng thái của bộ xử lý MicroBlaze. Thanh ghi này có thể đọc bằng lệnh MFS. Khi thực hiện lệnh MFS, bit 29 sẽ sao chép lại giá trị ở bit „0‟. Để ghi giá trị vào thanh ghi MSR, ta có thể sử dụng lệnh MTS hoặc lệnh đọc thanh ghi MSR và thiết lập các bit trong thanh ghi MSR (lệnh MSRESET), lệnh đọc thanh ghi MSR và xóa các bit trong thanh ghi MSR (lệnh MSRCLR). Khi viết vào thanh ghi MSR, bit nhớ (Carry) đƣợc viết ngay sau đó, những bit còn lại đƣợc viết sau một xung đồng hồ. Tất cả các giá trị ghi vào bit „0‟ đều bị hủy bỏ. Khi sử dụng lệnh MTS hoặc lệnh MFS, MFS thanh ghi này đƣợc chỉ định bằng cách thiết lập Sx=0x0001.

- Thanh ghi địa chỉ ngoại lệ EAR (Exception Address Register) lƣu địa chỉ nạp/lƣu trữ đầy đủ do những ngoại lệ sau gây ra:

+ Một truy cập ngoại lệ không thẳng hàng, có nghĩa là địa chỉ truy cập không đƣợc gióng thẳng hàng.

+ Ngoại lệ DPLB hoặc DOPB, chỉ rõ địa chỉ truy cập dữ liệu PLB hoặc OPB thất bại.

+ Ngoại lệ lƣu dữ liệu, chỉ rõ địa chỉ hiệu dụng đƣợc truy cập. + Ngoại lệ lƣu lệnh, chỉ rõ địa chỉ hiệu dụng đọc.

+ Ngoại lệ nhỡ dữ liệu TLB, chỉ rõ địa chỉ hiệu dụng đƣợc truy cập. + Ngoại lệ nhỡ lệnh TLB, chỉ rõ địa chỉ hiệu dụng đọc.

Nội dung của thanh ghi này không xác định các ngoại lệ khác. Khi đọc bằng lệnh MFS, thanh ghi đƣợc chỉ định bằng cách thiết lập Sa=0x003.

R

- Thanh ghi trạng thái ngoại lệ ESR chứa các bit trạng thái trong quá trình xử lý. Khi đọc lệnh MFS, thanh ghi ESR đƣợc chỉ định bằng cách thiết lập Sa=0x005.

- Thanh ghi mục tiêu nhánh BTR (Branch Target Register) chỉ tồn tại nếu MicroBlaze đƣợc cấu hình để sử dụng ngoại lệ. Thanh ghi này lƣu trữ địa chỉ lệnh kế tiếp sau khi thực hiện lệnh rẽ nhánh, thực hiện khi MSR[EIP]=0. Nếu một ngoại lệ do một lệnh trong khe thời gian trễ gây ra (ESR[DS]=1), ngƣời điều khiển ngoại lệ nên quay về thực hiện địa chỉ đƣợc lƣu trong BTR thay vì quay trở lại địa chỉ đƣợc lƣu trữ trong R17. Khi đọc bằng lệnh MFS, thanh ghi BTR đƣợc chỉ định bằng cách thiết lập Sa=0x000B.

- Thanh ghi trạng thái dấu phẩy động FSR (Floating Point Status Register) chứa các bit trạng thái của đơn vị dấu phẩy động. Nó có thể đƣợc đọc bằng lệnh MFS và đƣợc viết bằng lệnh MTS. Khi đọc hoặc viết, thanh ghi này đƣợc chỉ định bằng cách thiết lập Sa=0x007.

- Thanh ghi dữ liệu ngoại lệ EDR (Exception Data Register) lƣu dữ liệu đọc trên liên kết FSL gây ra bởi ngoại lệ FSL. Nội dung của thanh ghi này không xác định với tất cả các ngoại lệ khác. Khi đọc bằng lệnh MFS, EDR đƣợc chỉ định bằng cách thiết lập Sa=0x000D.

- Thanh ghi nhận dạng tiến trình PID (Process Identifier Register) đƣợc sử dụng để nhận dạng duy nhất một phần mềm dịch địa chỉ MMU (dịch trang địa chỉ hữu dụng sang trang địa chỉ ảo). Nó đƣợc điều khiển bởi sự lựa chọn cấu hình C_MMU trên MicroBlaze. Thanh ghi này chỉ đƣợc thực hiện khi C_MMU lớn hơn 1. Khi truy nhập bằng lệnh MFS và MTS, PID đƣợc chỉ định bằng cách thiết lập Sa=0x1000. Thanh ghi này có thể truy cập theo các thanh ghi đặc biệt quản lý bộ nhớ bởi tham số C_MMU_TLB_ACCESS.

- Thanh ghi bảo vệ vùng ZPR (Zone Protection Register) đƣợc sử dụng để bảo vệ trang bộ nhớ MMU, đƣợc định nghĩa trong các lối vào TLB. Nó đƣợc điều khiển bởi sự lựa chọn cấu hình C_MMU trên MicroBlaze. Thanh ghi này chỉ đƣợc thực thi nếu C_MMU lớn hơn „1‟ và nếu số vùng bảo vệ bộ nhớ theo lý thuyết lớn hơn „0‟ (C_MMU_ZONES > 0). Khi truy nhập bằng lệnh MFS và MTS, ZPR đƣợc chỉ định bằng cách thiết lập Sa=0x1001. Thanh ghi này có thể truy cập theo các thanh ghi đặc biệt quản lý bộ nhớ bởi tham số C_MMU_TLB_ACCESS.

- Thanh ghi chuyển dịch khoá một chiều đệm thấp TLBLO (Transaction Lock- Aside Buffer Low Register) đƣợc sử dụng để truy nhập các lối vào bộ đệm khoá một chiều chuyển dịch hợp lệ MMU (UTLB). Nó đƣợc điều khiển bởi sự lựa chọn cấu hình C_MMU trên MicroBlaze. Thanh ghi này chỉ đƣợc thực thi nếu C_MMU lớn hơn 1. Khi truy nhập bằng lệnh MFS và MTS, TLBLO đƣợc chỉ định bằng cách thiết lập Sa= 0x1003. Khi đọc hoặc viết TLBLO, lối vào UTLB đƣợc chỉ dẫn do thanh ghi TLBX

đƣợc truy nhập. Thanh ghi này có thể đƣợc đọc theo các thanh ghi đặc biệt quản lý bộ nhớ bởi tham số C_MMU_TLB_ACCESS.

- Thanh ghi chuyển dịch khoá một chiều đệm cao TLBHI (Translation Look- Aside Buffer High Register) đƣợc sử dụng để truy nhập các lối vào bộ đệm khoá một chiều dịch chuyển hợp lệ MMU. Nó đƣợc điều khiển bởi sự lựa chọn cấu hình C_MMU trên MicroBlaze. Thanh ghi này chỉ đƣợc thực thi nếu C_MMU lớn hơn „1‟. khi truy nhập bằng lệnh MFS và MTS, TLBHI đƣợc chỉ định bằng cách thiết lập Sa= 0x1004. Khi đọc hoặc viết TLBHI, lối vào UTLB đƣợc chỉ dẫn do thanh ghi TLBX đƣợc truy nhập. Thanh ghi này có thể đƣợc đọc theo các thanh ghi đặc biệt quản lý bộ nhớ bởi tham số C_MMU_TLB_ACCESS.

- Thanh ghi chỉ dẫn đệm khoá một chiều dịch chuyển TLBX (Translation Look- Aside Buffer Index Register): Thanh ghi này đƣợc sử dụng nhƣ một chỉ dẫn đối với bộ đệm khoá một chiều dịch chuyển hợp lệ UTLB khi truy cập thanh ghi TLBLO và TLBHI. Nó đƣợc điều khiển bởi sự lựa chọn cấu hình C_MMU trên MicroBlaze. Thanh ghi này chỉ đƣợc thực hiện nếu C_MMU lớn hơn 1. Khi truy cập với lệnh MFS và MTS, TLBX đƣợc chỉ định bằng cách thiết lập Sa=0x1002.

- Thanh ghi chỉ dẫn tìm kiếm bộ đệm khoá một chiều chuyển dịch TLBSX (Translation Look-Aside Buffer Search Index Register): đƣợc sử dụng để tìm kiếm số trang ảo trong bộ đệm khoá một chiều dịch chuyển hợp lệ. Thanh ghi này chỉ đƣợc thực thi nếu C_MMU lớn hơn „1‟. Khi đƣợc ghi bằng lệnh MTS, thanh ghi TLBSX đƣợc chỉ định bằng cách thiết lập Sa=0x1005.

- Thanh ghi phiên bản vi xử lý PVR (Processor Version Register): Thanh ghi PVR đƣợc điều khiển bởi sự lựa chọn cấu hình C_PVR trên MicroBlaze:

+ Khi C_PVR=0, vi xử lý không thực thi bất cứ thanh ghi phiên bản xử lý nào và MSR[PVR]=0 (vi xử lý không hoạt động).

+ Khi C_PVR=1, PVR0 hoạt động, và nếu nó đƣợc thiết lập là 2 thì tất cả 12 thanh ghi PVR (PVR0-PVR11) đều hoạt động.

Khi đọc bằng lệnh MFS, PVR đƣợc chỉ định bằng cách thiết lập Sa=0x200x.

Một phần của tài liệu Nghiên cứu và triển khai hệ vi xử lý trên cơ sở lõi xử lý MicroBlaze, thử nghiệm ứng dụng trên FPGA (Trang 35 - 38)