Skip to main content

Loongson Rips MIPS: Uses Old Code for New CPUs

Loongson
(Image credit: HKEPC)

Even though Loongson claims that its latest 3A5000 and 3C5000 processors are based on its in-house developed proprietary architecture and no longer rely on the MIPS architecture, the code the company uses to enable the new CPUs in Linux is actually the same code it used for its MIPS-based chips. Furthermore, the CPU developer fails to demonstrate advantages of its architecture even on paper to software developers. 

Historically, Loongson's CPUs relied on various types of the company's LoongISA architecture, a custom subset of the MIPS64 architecture. Such a tactic enabled the company to preserve compatibility with programs designed for MIPS64 (which includes software for high-performance computing applications) while bringing in its own extensions to improve performance in contemporary applications. 

But to make significant leaps in performance, Loongson needed a brand-new architecture, which is why it developed its LoongArch. The architecture continues to be MIPS-compatible, but it has about 2,000 of proprietary instructions, binary conversion extension instructions (LBT), vector processing extension instructions (LSX), advanced vector processing extension instructions (LASX), and virtualization extension instructions (LVZ). 

But instead of writing up new code to enable LoongArch-based CPUs in Linux, the company continues to use the old code that was written for MIPS64-powered processors, which causes some frustration in the community, reports Phoronix

"You keep saying 'not MIPS,' and yet all I see is a blind copy of the MIPS code," a software developer wrote to Loongson. "This is still the same antiquated, broken MIPS code, only with a different name." 

Since Loongson's LoongArch-based 3A5000 and 3C5000 CPUs can execute code designed for MIPS64 platforms and there may not be too many differences between the company's LoongArch and MIPS64 platforms, there is nothing bad about using proven code to enable them in Linux. However, using old code means that any new capabilities of the platform remain hidden. 

"What is that? Yet another MIPS legacy? Why does it have to be per interrupt if it obviously apply to each and every root interrupt?" another developer wondered. "You still obviously have some static partitioning of the interrupt space, which is not acceptable for a new architecture."

As of now, it remains to be seen when Loongson enables all-new capabilities of its LoongArch architecture in Linux.