CompactRISC
{{Short description|Family of instruction set architectures}}
CompactRISC is a family of instruction set architectures from National Semiconductor.
The architectures are designed according to reduced instruction set computing principles, and are mainly used in microcontrollers.{{cite web|url=http://www.eng.utah.edu/~cs3710/slides/cr16x2.pdf|title=National Semiconductor CR16, Compact RISC Processor, Baseline ISA and Beyond|last=Brunvand|first=Erik |work=CS/EE 3710|publisher=University of Utah |accessdate=3 December 2016}}
The subarchitectures of this family are the 16-bit CR16 and CR16C and the 32-bit CRX.{{cite book|last=von Hagen|first=William |title=The Definitive Guide to GCC|publisher=Apress|date=2011|page=422|isbn=9781430202196|url=https://books.google.com/books?id=wQ6r3UTivJgC&q=national+cr16+crx&pg=PA422}}
Architectures
Features of CR16 family: compact implementations (less than 1 mm2 with 250 nm), addressing of 2 MB (2{{sup|21}}), frequencies up to 66 MHz, hardware multiplier for 16-bit integers.
It has complex instructions such as bit manipulation, saving/restoring and push/pop of several registers with single command.
CR16 has 16 general purpose registers of 16 bits, and address registers of 21 bits wide. There are 8 special registers: program counter, interrupt stack pointer ISP, interrupt vector address register INTBASE, status register PSR, configuration register and 3 debug registers. Status register implements flags: C, T, L, F, Z, N, E, P, I.
Instructions are encoded in two-address form in several formats, usually they have 16-bit encoding, but there are two formats for medium immediate instructions with length of 32-bit. Typical opcode length is 4 bits (bits 9–12 of most encoding types. Basic encoding formats are:
- Register-to-register,
- Short 5-bit immediate value to register,
- Medium immediate of 16-bit value to register (32-bit encoding),
- Load/store relative with short 5-bit displacement (2-bit opcode),
- Load/store relative with medium 18-bit displacement (32-bit encoding, 2-bit opcode).
CR16C comes with a different opcode encoding format, has 23–32-bit-wide address registers and provides two 32-bit general purpose registers.{{cite web|url=https://dump.bitcheese.net/files/zujukix/Prog_16C.pdf|title=CR16C Programmer's Reference Manual}}
CR16 implements traps and interrupts. Implementations of CR16 has three-stage pipeline: fetch, decode, execute.
CR16 products
CR16 was used in several National Semiconductor microcontrollers, and since 2001 integrated microcontrollers were available having built-in flash memory.{{cite news|url=http://www.eetimes.com/document.asp?doc_id=1128340|title=National Semi's 16-bit MCU integrates flash, analog|last= Graham|first=Jeanne |publisher=EETimes|accessdate=3 December 2016|date=2001-02-22}}{{cite news|url=http://www.eetimes.com/document.asp?doc_id=1290094|title=National's 16-bit RISC MCU touts high-endurance flash|date=2001-03-13|publisher=EETimes|accessdate=3 December 2016}} Since 2007 CR16-based IP was available to licensing{{cite news|url=http://www.eetimes.com/document.asp?doc_id=1240853|title=NatSemi taps IPextreme for embedded IP resale|last=Hammerschmidt|first=Christoph |date=2007-02-21|publisher=EETimes|accessdate=3 December 2016}}
References
{{Reflist}}
External links
- [http://microcontroller.com/National_Semiconductor_Embedded_Microcontrollers.htm National Semiconductor Embedded Microcontrollers] (CR16 and COP8)
- [https://web.archive.org/web/20060618230034/http://www.national.com/appinfo/compactrisc/ CompactRISC Core Architecture] page on National Semiconductor website (archived copy from 2007)
- [http://www.eng.utah.edu/~cs3710/handouts/cr16.pdf CR16B Programmer’s Reference Manual], National Semiconductor, 1997
- [https://gcc.gnu.org/onlinedocs/gcc/CR16-Options.html GCC CR16 port]
{{Microcontrollers}}
{{microcompu-stub}}