CompactRISC — семейство архитектур наборов команд от National Semiconductor. Архитектура была разработана в соответствии с принципом сокращённого набора команд и в основном используется в микроконтроллерах[1]. Примерами архитектур этого семейства являются 16-битные CR16 и CR16C и 32-битная CRX[2].
Особенности семейства CR16 — компактность реализации (менее 1 мм² при 250-нанометровом техпроцессе), двухмегабайтное (221 байт) адресное пространство, поддержка частот до 66 МГц, аппаратный множитель 16-битных чисел. Архитектуры данного семейства включают в себя сложные инструкции, например, манипуляции над битами или сохранение в стек сразу нескольких регистров за одну инструкцию[1].
CR16 располагает 16 регистрами общего назначения (16 бит каждый) и адресными регистрами (21 бит). Есть 8 специальных регистров: счётчик инструкций (англ. Program Counter, PC), указатель стека прерываний (англ. Interrupt Stack Pointer, ISP), указатель вектора прерываний (англ. Interrupt Vector Adress Register, INTBASE), регистр состояния (англ. Processor Status Register, PSR), регистр конфигурации (англ. Configuration register, CFG) и три регистра отладки. Регистр состояния хранит следующие флаги: C, T, L, F, Z, N, E, P, I[1].
Реализация CR16 включает в себя ловушки[англ.] и прерывания. Выполняемые команды проходят трёхступенчатый конвейер: получение инструкции, декодирование и выполнение[1].
Архитектура CR16 использовалась в микроконтроллерах компании National Semiconductor. В 2001 году микроконтроллеры на этой архитектуре стали поддерживать встроенную флеш-память[3][4]. С 2007 года интеллектуальная собственность, основанная на CR16, стала доступной для лицензирования[5].