Jump to content

CompactRISC

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Citation bot (talk | contribs) at 21:10, 9 December 2020 (Alter: url, title. URLs might have been internationalized/anonymized. | You can use this bot yourself. Report bugs here. | Suggested by AManWithNoPlan | All pages linked from cached copy of User:AManWithNoPlan/sandbox2 | via #UCB_webform_linked 456/998). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

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.[1] The subarchitectures of this family are the 16-bit CR16 and CR16C and the 32-bit CRX.[2]

CR16 architectures

Features of CR16 family: compact implementations (less than 1 mm2 with 250nm), addressing of 2 MB (2^21), frequencies up to 66 MHz, hardware multiplier for 16-bit integers.[1]

It has complex instructions such as bit manipulation, saving/restoring and push/pop of several registers with single command.[1]

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.[1]

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).[1] CR16C comes with a different opcode encoding format, has 23-32bits wide address registers and provides two 32bit general purpose registers.[3]

CR16 implements traps and interrupts. Implementations of CR16 has three-stage pipeline: Fetch, Decode, Execute.[1]

CR16 products

CR16 was used in several National Semiconductor microcontrollers, and since 2001 integrated microcontrollers were available having built-in flash memory.[4][5] Since 2007 CR16-based IP was available to licensing[6]

References

  1. ^ a b c d e f Brunvand, Erik. "National Semiconductor CR16, Compact RISC Processor, Baseline ISA and Beyond" (PDF). CS/EE 3710. University of Utah. Retrieved 3 December 2016.
  2. ^ von Hagen, William (2011). The Definitive Guide to GCC. Apress. p. 422. ISBN 9781430202196.
  3. ^ "CR16C Programmer's Reference Manual" (PDF).
  4. ^ Graham, Jeanne (2001-02-22). "National Semi's 16-bit MCU integrates flash, analog". EETimes. Retrieved 3 December 2016.
  5. ^ "National's 16-bit RISC MCU touts high-endurance flash". EETimes. 2001-03-13. Retrieved 3 December 2016.
  6. ^ Hammerschmidt, Christoph (2007-02-21). "NatSemi taps IPextreme for embedded IP resale". EETimes. Retrieved 3 December 2016.