2.2. Kiến trúc cơ bản của MicroBlaze
2.2.2. Kiến trúc bộ nhớ
Bộ xử lý MicroBlaze đƣợc xây dựng theo kiến trúc Harvard. Trong kiến trúc Harvard, sự truy xuất lệnh và truy xuất dữ liệu đƣợc tách riêng biệt với nhau trong vùng không gian địa chỉ. Mỗi không gian địa chỉ là 32 bit (MicroBlaze cung cấp tới 232 byte=4GByte địa chỉ truy xuất lệnh và dữ liệu). Vùng nhớ lệnh và vùng nhớ địa chỉ đƣợc ánh xạ tới cùng một ô nhớ vật lý.
Cả giao tiếp lệnh và giao tiếp dữ liệu của MicroBlaze đều rộng 32 bit, sử dụng kiểu định dạng dữ liệu “big endian, bit reversed”. MicroBlaze cho phép cung cấp các kiểu truy xuất theo từ, nửa từ hay theo byte đối với vùng nhớ dữ liệu.
MicroBlaze không phân biệt truy cập dữ liệu tới thiết bị ngoại vi và tới bộ nhớ. MicroBlaze dùng 3 loại bus để truy xuất bộ nhớ:
- Bus nhớ nội LMB (Local Memory Bus): giao tiếp với các khối RAM.
- Bus ngoại vi on-chip OPB (On-Chip Peripheral Bus) hay bus xử lý nội PLB (Processor Local Bus): giao tiếp với các bộ nhớ trên chip và bộ nhớ của thiết bị ngoại vi.
- XCL (Xilinx Cache Link): đƣợc sử dụng để MicroBlaze giao tiếp trực tiếp với bộ đệm tích hợp trong khối điều khiển bộ nhớ chuyên dụng.
Không gian địa chỉ các vùng nhớ của MicroBlaze đƣợc chỉ ra nhƣ Hình 13. Trong đó vùng nhớ dành riêng cho ngƣời dùng lập trình nằm ở khoảng 0x0000_0000 đến 0x0000_004F.
Các ngoại vi Vùng nhớ OPB Vùng nhớ LMB Vùng nhớ dành riêng Phần cứng ngoại lệ Break Địa chỉ ngắt Địa chỉ ngoại lệ Địa chỉ Reset 0xFFFF_FFFF 0xFF00_FFFF 0xFEFE_FFFF 0x000_004F 0x000_0028 0x000_0024 0x000_0020 0x000_001C 0x000_0018 0x000_0014 0x000_0010 0x000_000C 0x000_0008 0x000_0004 0x000_0000
Hình 13: Không gian địa chỉ các vùng nhớ của MicroBlaze.
2.2.3. Cấu trúc đường ống
Bộ xử lý MicroBlaze thực hiện lệnh theo cấu trúc đƣờng ống (pipeline). Thông thƣờng khi thực hiện một lệnh phải mất vài xung đồng hồ (mỗi bƣớc thực hiện phải mất một xung đồng hồ). Để tăng tốc độ xử lý của MicroBlaze, ngƣời ta đã thực hiện cấu trúc đƣờng ống. Với cấu trúc này, bộ xử lý MicroBlaze thực hiện đồng thời nhiều lệnh (trong khi đang tiến hành giải mã lệnh trƣớc thì lấy lệnh sau), quá trình thực hiện các lệnh do đó diễn ra song song.
MicroBlaze có hai kiểu cấu trúc đƣờng ống. Kiểu đƣờng ống 3 bƣớc (stage) áp dụng cho những lệnh đơn giản và kiểu đƣờng ống 5 bƣớc (stage) áp dụng cho những lệnh phức tạp hơn (thƣờng là các lệnh liên quan đến truy xuất bộ nhớ).
a) Cấu trúc đường ống 3 bước
Đối với những lệnh đơn giản, MicroBlaze chia lệnh thành ba bƣớc nhỏ để thực hiện. Gồm: Nạp lệnh (fetch instruction), giải mã lệnh (decode instruction), thi hành lệnh (execute instruction). Cấu trúc đƣờng ống 3 bƣớc của MicroBlaze đƣợc mô tả nhƣ Bảng 1.
Bảng 1: Cấu trúc đường ống 3 bước.
Chu kỳ 1 Chu kỳ 2 Chu kỳ 3 Chu kỳ 4 Chu kỳ 5 Chu kỳ 6 Chu kỳ 7 Lệnh 1 Nạp lệnh Giải mã Thi hành
Lệnh 2 Nạp lệnh Giải mã Thi hành Thi hành Thi hành
b) Cấu trúc đường ống 5 bước
Với những lệnh phức tạp hơn liên quan đến truy xuất bộ nhớ, MicroBlaze chia lệnh làm 5 bƣớc thực hiện: nạp lệnh, giải mã lệnh, thực hiện lệnh, truy xuất bộ nhớ (Access Memory-MEM), Writeback (WB). Cấu trúc đƣờng ống 5 bƣớc của MicroBlaze đƣợc mô tả nhƣ Bảng 2.
Bảng 2: Cấu trúc đường ống 5 bước.
Chu kỳ 1 Chu kỳ 2 Chu kỳ 3 Chu kỳ 4 Chu kỳ 5 Chu kỳ 6 Chu kỳ 7 Chu kỳ 8 Chu kỳ 9 Lệnh 1 Nạp lệnh Giải mã Thi hành Mem WB Lệnh 2 Nạp lệnh Giải mã Thi hành
Mem Mem Mem WB
Lệnh 3 Nạp
lệnh
Giải mã
Mem Nghỉ Nghỉ Mem WB
2.2.4. Các thanh ghi trong MicroBlaze
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.
2.2.5. Kiểu dữ liệu trong MicroBlaze
MicroBlaze sử dụng kiểu định dạng dữ liệu “ Big Endian Bit Reversed” để biểu diễn dữ liệu. Kiểu định dạng này có đặc điểm là: byte thấp đƣợc viết trƣớc, byte cao đƣợc viết sau; bit thấp đƣợc viết trƣớc, bit cao đƣợc viết sau. Hay nói cách khác byte cao nhất (MSByte) đƣợc ghi vào địa chỉ thấp, ngƣợc lại byte thấp nhất (LSByte) đƣợc ghi vào địa chỉ cao trong bộ nhớ.
Phần cứng MicroBlaze hỗ trợ các kiểu dữ liệu là Word (4 byte), HalfWord (2 byte) và 1 byte. Cách tổ chức bit và byte trong mỗi kiểu dữ liệu đƣợc mô tả nhƣ Bảng 3,
Bảng 4 và Bảng 5.
Bảng 3: Kiểu dữ liệu Word.
Địa chỉ Byte n+3 n+2 n+1 n
Nhãn Byte 0 1 2 3
Byte trọng số LSByte MSByte
Nhãn Bit 0 31
Bit trọng số LSBit MSBit
Bảng 4: Kiểu dữ liệu Half Word.
Địa chỉ Byte n+1 n
Nhãn Byte 0 1
Byte trọng số LSByte MSByte
Nhãn Bit 0 15 31 Bit trọng số LSBit MSBit
Bảng 5: Kiểu dữ liệu Byte.
Địa chỉ Byte n+1 n
Nhãn Bit 0 7 31 Bit trọng số LSBit MSBit
Tất cả các lệnh truy xuất đều phải đƣợc gióng thẳng hàng theo kiểu dữ liệu Word khi thực hiện .
2.2.6. Hoạt động ngắt trong MicroBlaze
MicroBlaze hỗ trợ một nguồn ngắt ngoài 32 bit (đƣợc kết nối với cổng vào ngắt Interrupt) vì vậy nếu cần dùng nhiều ngắt ngoài, phải sử dụng một bộ điều khiển ngắt để quản lý các yêu cầu ngắt tới MicroBlaze. Bộ xử lý chỉ đáp ứng với các ngắt nếu bit
Trong một ngắt, giai đoạn thực hiện lệnh hoàn thành trong khi giai đoạn giải mã lệnh đƣợc thay thế bằng một nhánh tới véc-tơ ngắt (địa chỉ 0x10). Địa chỉ trả về của ngắt đƣợc tự động nạp vào thanh ghi mục đích chung R14. Các ngắt đƣợc che bởi bộ vi xử lý nếu bit tạm dừng trong tiến trình (BIP) hoặc bit đang thực hiện tiến trình (EIP) trong thanh khi MSR đƣợc thiết lập bằng „1‟.
2.3. Các giao tiếp tín hiệu của MicroBlaze
2.3.1. Giới thiệu chung
Lõi MicroBlaze đƣợc tổ chức cấu trúc phần cứng với các khối giao tiếp bus riêng biệt cho quá trình truy nhập lệnh và truy nhập dữ liệu. MicroBlaze cung cấp 3 kiểu giao tiếp bộ nhớ: Bus nhớ nội LMB (Local Memory Bus), bus xử lý nội PLB (Processor Local Bus), bus ngoại vi on-chip OPB (On-chip Peripheral Bus) và liên kết bộ nhớ đệm Xilink XCL (Xilink Cache Link), liên kết đơn tốc độ cao FSL (Fast Simplex Link).
Giao tiếp LMB cung cấp truy nhập chu kỳ xung nhịp đơn tới khối RAM cổng đôi trên chip. Giao tiếp PLB và OPB cung cấp kết nối tới cả bộ nhớ và ngoại vi trên chip và ngoài chip. Giao tiếp XCL đƣợc dự định để sử dụng cho các bộ điều khiển bộ nhớ trong đặc biệt. Đối với giao tiếp FSL, MicroBlaze cung cung cấp lên tới 16 cổng FSL, mỗi cổng có một giao tiếp FSL chủ và một giao tiếp FSL thợ.
* Đặc điểm:
MicroBlaze đƣợc cấu hình với các giao tiếp sau: - Phiên bản 32-bit của giao tiếp PLB V4.6 - Phiên bản 32 bit của giao tiếp bus V2.0 OPB
- LMB hỗ trợ giao thức đồng bộ cho hiệu ứng truyền thông khối RAM. - FSL hỗ trợ kỹ thuật truyền thông chuỗi tốc độ cao bất đối xứng.
- XCL cung cấp giao tiếp thợ xử lý chuỗi tốc độ cao, đối xứng giữa các bộ nhớ đệm và các khối điều khiển bộ nhớ trong.
- Gỡ lỗi giao tiếp cho việc sử dụng với khối gỡ lỗi xử lý MDM. - Các giao tiếp đƣợc phát hiện khi thực hiện phân tích quá trình.
Hình 14: Ví dụ về một hệ thống Bus điển hình của Micro Blaze.
Trong đó:
- DOPB: Giao tiếp lệnh theo chuẩn Bus ngoại vi trên chip OPB
- DLMB: Giao tiếp lệnh theo chuẩn bus nhớ nội LMB, chỉ dùng cho giao tiếp BRAM
- IOPB: Giao tiếp lệnh theo chuẩn Bus ngoại vi trên chip OPB
- ILMB: Giao tiếp lệnh theo chuẩn bus nhớ nội LMB, chỉ dùng cho giao tiếp BRAM
- IXCL: Cặp liên kết đơn nhanh FSL chủ/tớ - DXCL: Cặp liên kết đơn nhanh FSL chủ/tớ
2.3.2. Bus xử lý nội PLB
Giao tiếp PLB của MicroBlaze đƣợc thực hiện nhƣ những giao tiếp chủ 32 bit có khả năng cho phép trao đổi dữ liệu theo từng byte.