指令集当然有专利了,要不然当年搞x64的时候,Intel也不用那么偷偷摸摸去学AMD了,当年Intel为了这事赔了AMD12.5亿美元(包括其它的交叉专利授权):
详讯:英特尔支付12.5亿美元与AMD达成和解在x64 wiki词条里有这么一句:
Intel licenses to AMD the right to use the original x86 architecture (upon which AMD's x86-64 is based).[80][81]In 2009, AMD and Intel settled several lawsuits and cross-licensing disagreements, extending their cross-licensing agreements.[82][83]
指令集中有专利的部分包括:
1. 指令的名字,比如MOV/SYSENTER等,这些泛指指令集的某个大块或者某个子集,单单抄一个MOV不算侵权(需要评估)。
2. 指令集的寻址方式等,比如MOV EAX, [ESI+imm],Intel手册里有讲具体有多少种直接、间接寻址方式,单抄一个可能不算,大规模复制肯定算侵权。
3. 指令集的二进制编码方式,比如寄存器如何编址、寻址方式如何编址等,但不包含单个op code的值。
4. 公开的控制寄存器(位)的使用方式。
不在专利范围内的包括:
1. 具体某条指令的实现,比如SYSENTER指令背后的动作(注:AMD/Intel实现是不太一样的)。
2. 未公开的寄存器(位)的使用。
3. 某个指令的op code的值。
以上只是指令集这一块,你以为只实现了指令集,你的CPU就能兼容Windows、Linux了?太天真了吧。ACPI怎么实现?APIC怎么实现?这些玩意都是专利保护的,没有这些东西,只有一个CPU,操作系统根本跑不起来,连DOS都不行。
龙芯当年的规避策略是:
1. 不公开指令的名字,比如你叫LD,那我叫MOV好了。
2. 不公开寄存器编制方式,其实这是侵权的,但不公开就不好查。
好在龙芯是MIPS平台,中断控制器这些东西不需要依赖x86的这套技术,跑个Linux自然没问题,但在x86上根本行不通。
有x86授权的包括Intel、AMD、VIA三家。指令集跟性能无关。