Ilmu Komputer    
   
Daftar Isi
(Sebelumnya) Unicon (programming language)UNICOS (Berikutnya)

Unicore

For the grid computing middleware, see UNICORE.
Unicore
DesignerMicroprocessor Research and Development Center
Bits32-bit
Introduced1999
DesignRISC
EncodingFixed
BranchingCondition code
EndiannessLittle
Page size4 KiB
Registers
General purpose31
Floating point32

Unicore is the name of a computer instruction set architecture designed by Microprocessor Research and Development Center (MPRC) of Peking University in the PRC. The computer built on this architecture is called the Unity-863.[1] The CPU is integrated into a fully functional SoC to make a PC-like system.[2]

The processor is very similar to the ARM architecture, but uses a different instruction set.[3][better source needed]

It is supported by the Linux kernel as of version 2.6.39.[4]

Instruction set

The instructions are almost identical to the standard ARM formats, except that conditional execution has been removed, and the bits reassigned to expand all the register specifiers to 5 bits.[5] Likewise, the immediate format is 9 bits rotated by a 5-bit amount (rather than 8 bit rotated by 4), the load/store offset sizes are 14 bits for byte/word and 10 bits for signed byte or half-word. Conditional moves are provided by encoding the condition in the (unused by ARM) second source register field Rn for MOV and MVN instructions.


Unicore32 instruction set overview[6]
3
1
3
0
2
9
2
8
2
7
2
6
2
5
2
4
2
3
2
2
2
1
2
0
1
9
1
8
1
7
1
6
1
5
1
4
1
3
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
Description
000opcodeSRnRdshift0Sh0RmALU operation, Rd = Rn op Rm shift #shift
000opcodeSRnRdRs0Sh1RmALU operation, Rd = Rn op Rm shift Rs
001opcodeSRnRdshiftimm9ALU operation, Rd = Rn op #imm9 ROTL #shift
010PUBWLRnRdshift0Sh0RmLoad/store Rd to address Rn ± Rm shift #shift
011PUBWLRnRdoffset14Load/store Rd to address Rn ± offset14
100PUSWLRnBitmap high00HBitmap lowLoad/store multiple registers
101condLoffset24Branch (and link) if condition true
110Coprocessor (FPU) instructions
11111111Trap numberSoftware interrupt
000000ASRnRdRs1001RmMultiply, Rd = Rm * Rs (+ Rn)
0001000L1111111111000001001RmBranch and exchange (BX, BLX)
010PU0WLRnRd000001SH1RmLoad/store Rd to address Rn ± Rm (16-bit)
010PU1WLRnRdimm_hi1SH1imm_loLoad/store Rd to address Rn ± #imm10 (16-bit)

The meaning of various flag bits (such as S=1 enables setting the condition codes) is identical to the ARM instruction set. The load/store multiple instruction can only access half of the register set, depending on the H bit. If H=0, the 16 bits indicate R0–R15; if H=1, R16–R31.

References

  1. ^ "Introduction to MPRC". Microprocessor Research and Develop Center, Peking University. 
  2. ^ Xu Cheng; Xiaoyin Wang; Junlin Lu; Jiangfang Yi; Dong Tong; Xuetao Guan; Feng Liu; Xianhua Liu et al. (March 2010), "Research Progress of UniCore CPUs and PKUnity SoCs", Journal of Computer Science and Technology (JCST) 25 (2): 200–213, http://mprc.pku.edu.cn/~guanxuetao/pu blications/2010-JCST-CX.pdf, retrieved 2012-07-11
  3. ^ Bergmann, Arnd (2012-07-09). "Re: [PATCH 00/36] AArch64 Linux kernel port". linux-kernel mailing list. http://marc.info/?l=linux-kernel& m=134184818409286. Retrieved 2012-07-11. "Another interesting example is unicore32, which actually shares more code with arch/arm than the proposed arch/aarch64 does. I think the unicore32 code base would benefit from being merged back into arch/arm as a third instruction set, but the additional maintenance cost for everyone working on ARM makes that unrealistic."
  4. ^ "Merge window closed - 2.6.39-rc1 out". Linus Torvalds. 
  5. ^ Unicore processor simulator source code. Instruction formats are in decode.c, disassembly in interpret.c, and emulation in instEx.c.
  6. ^ QEMU Unicore32 emulator source code
(Sebelumnya) Unicon (programming language)UNICOS (Berikutnya)