4
\$\begingroup\$

I asked a general question on Law SE with one example (ARM) and for that example, I was directed to What exactly does ARM sell to vendors?. I've read that QA that ARM sells actual core designs.

I've read about RISC-V and ARM on Wikipedia and some other "blogs". "Experts" claim RISC-V is royalty-free architecture, but ARM is not. Can anybody "freely" build a chip to process e.g. ARM v9 instruction sets? If not, are instruction sets patented and/or maybe copyrighted too?

From one point of view, I see instruction sets descriptions as computer language (as Python) and Python use is royalty-free. However, in The never-ending story of X86 patents expiration:

Some of the old pieces of the x86 architecture patent already expired. Virtually every chip that’s been sold over the last decade or more will include SSE2 support as AMD made SSE2 a mandatory part of its 64-bit AMD64 extension. That’s a problem because the SSE family is also new enough—the various SSE extensions were introduced around 2001. Any patents covering SSE2 will still be in force. SSE3 is even more recent. Not to mention the fused multiply and add operation used on by all current OS which has an Intel patent valid until 2026.

"fused multiply and add operation used on by all current OS" - operations look to me as part instruction set, so looks as they can be patented.

\$\endgroup\$
5
  • 2
    \$\begingroup\$ I dare say you can copy the architecture but in order to make it compatible with ‘real’ ARM devices you might end up violating a patent or two. That is where the problem is. So at best, you can only make it ‘ARM like’. \$\endgroup\$
    – Kartman
    Sep 16, 2021 at 7:22
  • \$\begingroup\$ @Kartman, "compatible with ‘real’ ARM devices" - do you mean like put AMD processor in a PC that thas Intel and it won't fit the connectors on the motherboard though both x86? \$\endgroup\$ Sep 16, 2021 at 9:11
  • 1
    \$\begingroup\$ Compatible as in able to run the same code and operate identically. \$\endgroup\$
    – Kartman
    Sep 16, 2021 at 14:35
  • \$\begingroup\$ @Kartman, to run a code it needs to be loaded and then after run results need to be taken out to be useful (it is part of operation, right?). I guess no problems with running but problems with patents could arise on communication part? \$\endgroup\$ Sep 17, 2021 at 3:51
  • \$\begingroup\$ @Martian2020 the problem arises with software. Developers need to know the instruction set your processor supports to develop applications. So you can't use ARM ISA in your processor without the knowledge of ARM Ltd. ARM will sue you if you build a processor compliant with ARM ISA without a license from them. \$\endgroup\$ Nov 5, 2021 at 7:51

1 Answer 1

2
\$\begingroup\$

Note that the scope of this question should be bounded for you to get an answer. We can't talk about all of ARM, x86, etc. in one answer. There are plenty of Instruction sets. So, my answer is limited to Power, ARM, RISC-V and x86. Just to make sure we are on the same page, I will also include a brief discussion of Instruction set in this answer.

What is an Instruction Set?

An Instruction set is a set of instructions that an ISA (Instruction Set Architecture) compliant processor should implement at the hardware level. Programming languages are hardware agnostic, with the exception of Assembly language. Assembly language is just a specification on how to translate assembly code to machine code.

A programming language exists to enable cross architecture software development, i.e. write once and compile for different ISAs. ISAs enable you to reduce development effort of a processor, because there will be a good ecosystem of software and compilers available for a supported ISA. A processor without software is useless. Compilers and software can also be optimized to take advantage of that processor's strength. With the ISA you do get a good starting point to build a CPU, and this shortens your time-to-market, which is a very important metric in the consumer electronics industry. You can think of the ISA as giving you an ecosystem of software and compilers for your processor.

It is also noteworthy that the Instruction set architecture is exactly what enables technologies like cross-platform compilation, x86 emulation on ARM and vice versa.

ARM

ARM sells Intellectual Property (processor cores and other hardware in a digital format) to customers; and they also license their architecture (instruction set) to customers for a fee.

Power

Developed by IBM, this was a proprietary ISA that was later open-sourced, and is maintained by The OpenPOWER Foundation.

RISC-V

RISC-V is open-sourced from the start. You can build and sell your own RISC-V processors without paying anything to RISC-V. You have to pay RISC-V if you want to use the RISC-V logo when marketing your processor.

x86

x86 was somewhat harder to analyze about its licensing aspects, so take it from Intel: https://newsroom.intel.com/editorials/x86-approaching-40-still-going-strong/

The Protecting x86 ISA Innovation section in the above article says it all.

\$\endgroup\$
7
  • 1
    \$\begingroup\$ "Some x86 and x86-64 ISA instructions are patented, so you can't use them without obtaining a license." (not aggressively) do you have a source for this? By "use" to you mean write a program which contains them, or instead to implement them in hardware? \$\endgroup\$ Nov 5, 2021 at 7:55
  • \$\begingroup\$ @KeeleyHoek I have edited it to clarify on what is meant by use. I don't have a different source about x86, I assumed the one in the question \$\endgroup\$ Nov 5, 2021 at 8:14
  • 1
    \$\begingroup\$ @KeeleyHoek I added a new section on x86, backed by a source from Intel's website. \$\endgroup\$ Nov 5, 2021 at 8:46
  • \$\begingroup\$ seems to me you set the scope, but have not answered the question. E.g. on Python I write i=a+b to add two variables. Say for ABC ISA command is 0001 01 02 03 where 0001 is add, 01, 02 and 03 are registers. Why Python is free to use but using 0001 01 02 03 is not? Free to use AFAIK one can write a program on Python, one can write a compiler / interpreter for Python. \$\endgroup\$ Nov 6, 2021 at 2:40
  • 1
    \$\begingroup\$ @Martian2020 0001 01 02 03 is perfectly free to use. What you can't do is make a new processor that implements that instruction set. \$\endgroup\$
    – Hearth
    Nov 6, 2021 at 5:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.