指令集(Instruction Set)是计算机硬件和软件的接口。在设计一款CPU时,逻辑上说应该是先有指令集再有硬件实现,因此指令集的选择非常重要。在CPU内部,控制器会根据指令集中的指令,调度ALU、寄存器组、Cache、总线等硬件模块实现指令功能。各种复杂的应用程序在CPU内部运行的时候,都变成了取址、运算、读写等等基本指令,这些基本指令具有指令集规定的位域和位宽,是CPU控制器可以“识别”的二进制码。直接利用指令集中的指令(二进制码)来写代码非常麻烦,因此大多数程序员使用高级语言(例如java,c,c++,C#,pascal,python等等)进行编程,这些依据特定语法生成的代码通过编译器转换成机器指令在CPU中运行。

目前商用比较多的指令集有x86指令集、ARM指令集、MIPS指令集等等。不同的CPU生产厂商有可能使用相同的指令集,但实现时设计了不同的硬件电路。例如Intel和AMD都使用了x86指令集,但是它们的CPU芯片性能仍然存在差别。x86和ARM指令集是不开源的,未经授权不能基于这些指令集进行CPU设计。

RISC-V是一个开源的指令集,不需要授权就可以进行基于RISC-V指令集的CPU设计。加州伯克利大学开发了Chisel硬件构建语言,可以将代码编译成Verilog,是RISC-V CPU理想的开发工具。