Kiến trúc Universal

Kiến trúc Universal RISC Architecture là kiến trúc 128 bit của bộ vi xử lý URA. Kiến trúc này là kiến trúc hoàn toàn 128 bit ngay từ đầu khi thiết kế. Mục tiêu của kiến trúc này là nền tảng tính toán cho hầu hết tất cả thiết bị.
UAx cũng có thể dành cho các thiết bị nhúng, hoặc máy tính cầm tay.
 Tổng quát 
URA có 128 thanh ghi đa dụng 128 bit dành cho tính số nguyên. Số nguyên có thể là số âm hoặc không âm. Vì độ dài 128 bit khá lớn nên nó cũng có tập lệnh cho tính toán vector cho số nguyên. Ví dụ để tính phép tính cộng cho 4 số nguyên, nó cộng và dư carry của mỗi số ra thanh ghi da dụng khác tại vị trí  dư bit
Ngoài ra UA cũng có 128 thanh ghi chấm động 128 bit.
 127                      63            31            0
 [-------------------------|------------|-------------] 
UA không có thanh ghi cờ như x86
Vi lệnh của URA có độ dài cố định
 Thực hiện 
Hiện tại thiết kế này chưa có bản ngôn ngữ mô tả phần cứng và cũng chưa có phiên bản hiện thực.
 Kiến trúc 
 Thanh ghi 
Kiến trúc UA khá nhiều thanh ghi, bao gồm:
 Thanh ghi đa dụng: R0->R127 (128 bit)
 Thanh ghi: sp ra pc 
R127=ra
R126=pc
R125=sp
R0=0
R1 là thành ghi trả về
R2->r11 thăm số chỗ hàm

 Chương trình 
Không gian địa chỉ bộ nhớ là không gian tuyến tính, nghĩa là các dãy địa chỉ liên tục 128 bit địa chỉ cho mỗi byte bộ nhớ. Do đó UA có thể có lên đến 340,282,366,920,938,463,463,374,607,431,768,211,456 bytes. Vì địa chỉ khác lớn cho một chương trình trong bộ nhớ, nên không gian này được chia ra thành đoạn. 
 +------------------------------------------------+ 
 + S +                                            + 
 +------------------------------------------------+ 
Thanh ghi đoạn này chỉ đến mảng cấu trúc mô tả đoạn.
 Cấu trúc mô tả đoạn 
 127                                                                       0 
 +-------------------------------------------------------------------------+ 
 +                      limitation                       +      type       + 
 +-------------------------------------------------------------------------+
 +                   112 bit base address                                  +
 +-------------------------------------------------------------------------+
Cấu trúc mô tả đoạn bao gồm:
 Địa chỉ cơ sở 128 bit
 16 bit phân loại đoạn
 Giới hạn của đoạn 112 bit
Cấu trúc địa chỉ đoạn được lưu trong bảng cấu trúc mô tả đoạn. Bảng này được lưu trong bộ nhớ và thanh ghi DTR lưu địa chỉ cơ sở của đoạn. Vì vậy đoạn rỗng là đoạn có tất cả 256 bit đều bằng không.

 Ngắt 
Kiến trúc UA cho phép tới 8 bit ngắt tức 256 ngắt, trong đó 32 ngắt đầu tiên được sử dụng cho bộ vi xử lý. Có nhiều tín hiệu ngắt, một số nguồn của ngắt:
 Vi lệnh, do một số vi lệnh sinh ra (syscall)
 Ngắt từ thiết bị bên ngoài
 Ngắt do bộ định thời
 Ngắt liên-nhân
Bộ vi xử lý thường được tích hợp bộ định thời (có thể lập trình được) để thực hiện việc ngắt từ các ứng dụng và ngắt liên nhân cho đa xử lý đối xứng. Hệ điều hành sử dụng cơ chế này để thực hiện đa luồng và đa tác vụ. Việc điều khiển ngắt được thực hiện qua cấu trúc dữ liệu và các thanh ghi trong bộ vi xử lý. Vi lệnh mov dùng để sao tải từ bộ nhớ đến thanh ghi điều khiển ngắt và ngược lại.

 Vi lệnh UA 
Mã vi lệnh của UA có hai chiều dài 2 bytes và 4 bytes, và có thể trộn lẫn với nhau giúp cho mã lệnh được nén thay vì cố định chỉ 4 bytes. Điều này có thể làm được thông qua trình biên dịch. Chiều dài tối đa của mã lệnh là 4 bytes, trường hợp đặc biệt là 10 bytes. 
Các kiểu mã hoá vi lệnh:
kiểu 3 toán hạng 
Kiểu này có 3 bit mode và 3 toán hạng, kiểu này phổ dụng nhất trong UA. Tuỳ theo mức độ thi công mà mode có thể.
Tuy nhiên mode  000 là mode của thanh ghi-thanh ghi. Kiểu này không mã hoá được displacement như x86 vì bị đóng trong 4 bytes.
  6bit        3bit    7 bit   7 bit    7 bit        2bit  
 +----------+----------+------+---------+---------+--------+ 
 +  inst   + nop  +  rd   +    rs   +   rt    +  ---   + 
 +----------+-------------+---------+---------+--------+ 
 and or xor shl shr rol ror
 slt sltu
9 view lenh

Kiểu 2 toán hạng
Chiều dài cũng 4 bytes 
Phù hợp với lệnh cp với 4 bit điều kiện,3 bit mode cho thanh ghi hay địa chỉ bộ nhớ,size qui đinh kích cỡ toán hạng.
                          7bit  7bit  2bit
+------------------+-------+------+-------+ 
+   imm16     + rx   + ry  +  be  +
+------------------+-------+------+-------+ 
 be bne branch to 16 bit  offset
  addi

 Kiểu tích hợp hằng 
Chiều dài 4 bytes
   6bit      
+--------+-----------------------------------------+
+ Jal   +             imm24       + 2bit  +
+--------+-----------------------------------------+
Jal sẽ dùng cho gọi hàm tới 26 bit
 Danh sách btl 
 be bne addi
 slt sltu
 jal 
 and or xor
 shl shr rol ror
 set

 Kiểu 1 toán hạng 
Chiều dài 2 bytes 
   8 bit  1bit    7 bit 
 +--------+----+----------+ 
 +  inst  + M  +   op1    + 
 +--------+----+----------+ 
Kiểu này dành cho lệnh jmp hoặc call  và các lệnh chỉ có một toán hạng. Bit M dùng để xác định thanh ghi hay địa chỉ. Điều này cũng không cần thiết cho lệnh jmp và call.
 JNL jump and link to %r127
 trap
 LDT,SDT: tải/lưu segment descriptor table
 LIDT,SIDT: tải/lưu interrupt descriptor table
 LTR,STR: tải/lưu thread register

 Bộ tập lệnh 
Các toán tử của vi lệnh là thanh ghi với thanh ghi ngoại trừ L/S có thể thanh ghi - bộ nhớ.
Dấu gạch ngang '-' là thay đổi tuỳ thuộc vào câu lệnh.
Mỗi opcode là tương ứng cho một lệnh của hợp ngữ điều này tạo điều kiện cho lập trình viên dễ hiểu hơn khi lập trình.
Sau đây là bảng mô tả tập lệnh UA:
 STT   Tên   Hợp ngữ           Mã hoá  Mô tả 1     addi   add %rd,%ra, imm16      chỉ lệnh 1 Cộng 2       be  be %rd,%rs,label        chỉ lệnh 2 nhảy nếu giống nhau 3     bne bne rd,%rs,label16     chỉ lệnh 3 nhảy nếu khác nhau  4      jal  jal label24    chỉ lẹnh 4 gọi hàm 5     jr jr %rd       chỉ lệnh 5 nhảy vào thanh ghi 6     slt   slt%rd,%rs,%rt          dddddddsssssscc set nếu nhỏ hơn     sltu   sltu       chỉ lệnh 6 set nếu nhỏ hơn không dấu 8     shl  shl %rd,%rs,%rt          00001000 dddddddsssssssttttttt ccc dịch trái 9     AND    and %rd,%rs,%rt           00001001 dddddddsssssssttttttt ccc logic and 10    OR     or %rd,%rs,%rt            00001010 dddddddsssssssttttttt ccc logic or 11    XOR    xor %rd,%rs,%rt           00001011 dddddddsssssssttttttt ccc logic xor 12    BE     be %rd,%rs,10 off         00010000 dddddddsssssss imm 10 bit nhánh đến 10 bit offset nếu %rd=%rs 13    BNE    bne %rd,%rs,10bit off     00010001 dddddddsssssss imm 10 bit rẽ nhánh đến 10 bit offset nếu %rd !=%rs 14    BGT    bgt %rd,%rs,10bit off     00010010 dddddddsssssss imm 10 bit rẽ nhánh đến 10 bit offset nếu %rd > %rs 15    BLT    blt %rd,%rs,10bit off     00010011 dddddddsssssss imm 10 bit rẽ nhánh nếu rd<rs 18    CMP    cmp %rd,%rs               00010110 dddddddsssssss ---------- so sánh rd và rs 19    SHL    shl %rd,%rs,$imm7         00010111 dddddddsssssssiiiiiii ccc  shift left có 3 bit điều kiện: rd=%rs<<i7 20    SHR    shr %rd,%rs,$imm7         00011000 dddddddsssssssiiiiiii ccc  shift right rd=%rs>>i7 21    ROTL   rotl %rd,%rs,$imm7        00011001 dddddddsssssssiiiiiii ccc  rotate left 22    ROTR   rotr %rd,%rs,$imm7        00011010 dddddddsssssssiiiiiii ccc  rotate right 23    LB     lb   %rd,%rs,$imm10       00011011 dddddddsssssss imm10 bit   load byte to rd from (%rs+i10) 24    LH     lh   %rd,%rs,$imm10       00011100 dddddddsssssss imm10       load half word to rd from (%rs+i10) 25    LW     lw   %rd,%rs,$imm10       00011101 dddddddsssssss imm10       load word to rd from '' 26    LD     ld   %rd,%rs,$imm10       00011110 dddddddsssssss imm10       load double word

 Trình biên dịch 
Hiện chưa có trình biên dịch nào hỗ trợ
 Xem thêm 
 Vi xử lý
 X86

Tham khảo

Thể loại:Vi xử lý