유니코어

Unicore
유니코어
디자이너마이크로프로세서 연구개발센터
비트32비트
소개했다1999
설계.RISC
부호화고정된.
분기조건코드
엔디안니스작은
페이지 크기4 KiB
레지스터
범용31
부동 소수점32

Unicore중국 베이징 대학의 마이크로프로세서 연구 개발 센터(MPRC)가 설계한 컴퓨터 명령 세트 아키텍처 이름입니다.이 아키텍처에 구축된 컴퓨터는 Unity-863이라고 [1]불립니다.CPU는 완전히 기능하는 SoC에 통합되어 PC와 같은 [2]시스템을 만듭니다.

프로세서는 ARM 아키텍처와 매우 유사하지만 다른 명령 [3][better source needed]세트를 사용합니다.

버전 2.6.39 이후 Linux [4]커널에서 지원됩니다.Linux 커널 버전 5.9 에서는, 서포트는 삭제될 예정입니다.이것은, 아무도 서포트를 유지 보수하지 않는 것 같고, 코드는 커널 코드와 컴파일러의 나머지 [5]요건보다 뒤떨어지고 있기 때문입니다.

명령 집합

명령어는 조건부 실행이 삭제되고 모든 레지스터 지정자를 5비트로 [6][7]확장하도록 비트가 재할당된 것을 제외하고 표준 ARM 형식과 거의 동일합니다.마찬가지로 즉시 포맷은 5비트 양으로 9비트가 회전합니다(4비트로 회전하는 것이 아니라).로드/스토어 오프셋 사이즈는 바이트/워드의 경우 14비트, 부호 있는 바이트 또는 하프워드의 경우 10비트입니다.조건부 이동은 MOV 및 MVN 명령에 대해 (ARM에 의해 사용되지 않음)두 번째 소스 레지스터 필드 Rn의 조건을 부호화함으로써 제공됩니다.

Unicore32 명령어세트의[8] 개요
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
묘사
0 0 0 동작 코드 S Rn Rd 교대하다 0 0 Rm ALU 연산, Rd = Rn op Rm 시프트 #shift
0 0 0 동작 코드 S Rn Rd Rs 0 1 Rm ALU 연산, Rd = Rn op Rm 시프트 Rs
0 0 1 동작 코드 S Rn Rd 교대하다 imm9 ALU 작동, Rd = Rn op #im9 R OTL #shift
0 1 0 P U B W L Rn Rd 교대하다 0 0 Rm Rd를 로드/저장하여 Rn ± Rm 변속 #shift
0 1 1 P U B W L Rn Rd 오프셋 14 Rd를 로드/저장하여 주소 Rn ± 오프셋 14
1 0 0 P U S W L Rn 비트맵 높음 0 0 H 비트맵 낮음 여러 레지스터 로드/저장
1 0 1 견디다 L 오프셋 24 조건이 참일 경우 분기(및 링크)
1 1 0 코프로세서(FPU) 명령
1 1 1 1 1 1 1 1 트랩 번호 소프트웨어 인터럽트
0 0 0 0 0 0 A S Rn Rd Rs 1 0 0 1 Rm 곱셈, Rd = Rm * Rs(+Rn)
0 0 0 1 0 0 0 L 11111 11111 00000 1 0 0 1 Rm 지점 및 교환기(BX, BLX)
0 1 0 P U 0 W L Rn Rd 00000 1 S H 1 Rm Rd를 로드/저장하여 Rn ± Rm(16비트) 주소를 지정합니다.
0 1 0 P U 1 W L Rn Rd imm_hi 1 S H 1 imm_lo Rd를 로드/저장하여 Rn ± #imm10(16비트) 주소를 지정합니다.

다양한 플래그 비트의 의미(예: S=1이 조건 코드 설정을 활성화함)는 ARM 명령 집합과 동일합니다.로드/저장 다중 명령은 H 비트에 따라 레지스터 세트의 절반에만 액세스할 수 있습니다.H=0인 경우 16비트는 R0–R15, H=1인 경우 R16–R31을 나타냅니다.

레퍼런스

  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; Chun Yang; Yi Feng (March 2010), "Research Progress of UniCore CPUs and PKUnity SoCs" (PDF), Journal of Computer Science and Technology (JCST), 25 (2): 200–213, doi:10.1007/s11390-010-9317-1, S2CID 7083916, retrieved 2012-07-11
  3. ^ Bergmann, Arnd (2012-07-09). "Re: [PATCH 00/36] AArch64 Linux kernel port". linux-kernel (Mailing list). 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. ^ "remove unicore32 support". Mike Rapoport.
  6. ^ Hsu-Hung Chiang; Huang-Jia Cheng; Yuan-Shin Hwan (2012-02-25), "Doubling the Number of Registers on ARM Processors" (PDF), 16th Workshop on Interaction between Compilers and Computer Architectures (INTERACT), pp. 1–8, doi:10.1109/INTERACT.2012.6339620, ISBN 978-1-4673-2613-1, S2CID 6832041
  7. ^ 유니코어 프로세서 시뮬레이터 소스 코드.명령 형식은 decode.c, disassembly interface.c, 에뮬레이션 instEx.c입니다.
  8. ^ QEMU Unicore32 에뮬레이터 소스 코드