유니코어
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의 조건을 부호화함으로써 제공됩니다.
묘사 | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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을 나타냅니다.
레퍼런스
- ^ "Introduction to MPRC". Microprocessor Research and Develop Center, Peking University.
- ^ 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
- ^ 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.
- ^ "Merge window closed - 2.6.39-rc1 out". Linus Torvalds.
- ^ "remove unicore32 support". Mike Rapoport.
- ^ 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
- ^ 유니코어 프로세서 시뮬레이터 소스 코드.명령 형식은 decode.c, disassembly interface.c, 에뮬레이션 instEx.c입니다.
- ^ QEMU Unicore32 에뮬레이터 소스 코드