CPU

CPU

LS3A4K的Python如何使用sympy pymysql talib以及jupyter?

tangyuan 回复了问题 • 3 人关注 • 2 个回复 • 176 次浏览 • 2020-08-12 13:27 • 来自相关话题

openEuler 龙芯版从哪里下载呀?

回复

gugudu 发起了问题 • 1 人关注 • 0 个回复 • 166 次浏览 • 2020-07-26 10:49 • 来自相关话题

这个板谁用过?具体型号是什么?

回复

guoissac 发起了问题 • 1 人关注 • 0 个回复 • 132 次浏览 • 2020-06-21 00:22 • 来自相关话题

: 请用准确的语言描述您发布的问题思想

回复

gouguan 发起了问题 • 1 人关注 • 0 个回复 • 151 次浏览 • 2020-05-25 22:11 • 来自相关话题

LS3A3000H-UL和LS3A3000-LP的替代性

回复

lgwqp 发起了问题 • 1 人关注 • 0 个回复 • 207 次浏览 • 2020-05-14 16:31 • 来自相关话题

一篇有关 LoongISA 的黑文

windows1089 发表了文章 • 0 个评论 • 321 次浏览 • 2020-04-19 21:21 • 来自相关话题

1、引言2020年4月17日,在日常看中文维基上的监视列表时,发现有人竟然给我的LoongMMI条目挂关注度模版,并且提议合并到LoongISA条目。 ...查看全部
1、引言2020年4月17日,在日常看中文维基上的监视列表时,发现有人竟然给我的LoongMMI条目挂关注度模版,并且提议合并到LoongISA条目。
Snipaste_2020-04-18_22-09-31.png



Snipaste_2020-04-18_22-09-16.png

当时我认为这是在挑衅我不会查有关龙芯的资料,于是我就花了15分钟找到了有关龙芯SIMD指令优化H.264视频解码的论文,并且暴力删了模版。
Snipaste_2020-04-18_22-09-56.png


在查找的过程中,偶然看到有人在观察者网的风闻社区讨论龙芯3A4000的指令集。

Snipaste_2020-04-18_22-19-50.png

 
 
看了一下,我觉得还可以再写一篇文章来黑龙芯的LoongISA,顺便吐出一直想吐的槽。
 
2、初略介绍LoongISA
 LoongISA,简而言之就是现在龙芯所使用的指令集的架构的自称。LoongISA不仅包括全部MIPS基础指令集和部分扩展模块,也包括龙芯自己添加的指令集。
 
LoongISA从龙芯2E/F时就开始出现部分扩展指令集,在龙芯3A1000形成体系,在龙芯3A2000的发布会上正式向外界公开宣传,在龙芯3A4000时初具规格。
 
下面就按照龙芯芯片产品的发展顺序来介绍典型产品中LoongISA的变化。
 
( 1 )龙芯2E/F时代(GS464 R1
 
龙芯从龙芯2E/F时就开始在微架构中加入自己的指令集了。典型的就是LoongMMI,也被称为LoongSIMD(龙芯SIMD),亦被称为Godson-MMX。网上至今还能查询到一些有关针对龙芯2F处理器的优化文章和对LoongMMI优化的论文。
 
( 2 )龙芯3A1000时代(GS464 R2 / GS464V R1
 
从龙芯3A1000时代开始龙芯就往微架构里面添加大量的指令集并开始初步形成LoongISA体系(LoongEXT + LoongMMI + LoongCAM + LoongBT x86二进制翻译部分)。龙芯在龙芯3B1000/1500 的 GS464V R1 中添加了大量的向量指令集,但一直没有公开指令集手册。
 
( 3 )龙芯3A2000时代(GS464E / GS264
 
在龙芯3A2000的发布会上龙芯正式对外公开宣传LoongISA。此时的GS464E为LoongISA1.0架构。LoongISA1.0包括MIPS64R2 + MIPS DSP + MIPS VZ + LoongEXT1/2 + LoongMMI + LoongCAM + LoongBT + LoongVZ,官方在发布会上还说添加了1014条LoongSIMD指令。在龙芯2K1000中,只包含了MIPS64R2 + MSA1.0 + LoongEXT1/2 + LoongMMI + LoongCAM + LoongBT
 
( 4 )龙芯3A4000时代(GS464V R2
 
龙芯3A4000相对于上一代LoongISA1.0添加了更多的指令集,并形成了LoongISA2.0。
 
在编译链层面龙芯3A4000(GS464V R2)依然是 MIPS64R2。其添加的指令集扩展可以用一张表来列出。
 

Snipaste_2020-04-19_20-50-38.png


Snipaste_2020-04-19_20-50-59.png

 
 
表格的指令集名称皆为缩写。其中,LCAMP即为LoongCAM,LVZP即为新版LoongVZ,LoongISA1.0中的LoongVZ已被删去。
 
3、详细吐槽
( 1 )资料匮乏
 
龙芯官方有关LoongISA的资料实在是太少了!太少了!太少了!现在唯一能查到指令集细节的指令集扩展就只有LoongMMI了。其他的要么只是在官方的手册中列出来,要么只给授权用户,要么什么都没有。
 

Snipaste_2020-04-19_17-05-49.png

 
 
这样就导致了网上很多有关龙芯自己扩展指令集的猜测和抹黑。例如龙芯从发布会公布了LoongSIMD后一直没有继续公开其具体细节,可能很多人还不知道LoongMMI是其子集。我在网上查找了相关资料后,只在两篇论文里面查找到相关描述:


3.1 “龙芯” 处理器 SIMD 技术简介
 
“龙芯”系列处理器是中国科学院计算所研制的具有自主 知识产权的通用处理器,具有低功耗,低成本的特点。64 位 “龙芯”二号增强型处理器采用 SIMD 技术,通过扩展多媒体 指令集实现对多媒体应用的指令级支持。SIMD 即单指令多 数据流,是一种典型的并行数据处理技术。处理器把输入的 数据分解为多个较短的数据,然后由单指令并行操作,从而提 高处理海量、可分解数据的能力。“龙芯”的多媒体指令吸取 了 MMX、 SSE 的优秀思想,进行了特色设计,支持基于字节、 半字、字以及双字的整数操作,直接使用FPU 的 32 个 64 位浮 点寄存器作为多媒体寄存器。该类指令的操作对象为 64 位, 可以分割为 8*8, 16*4, 32*2, 64*1。如果每个数据单元为 8 位, 则有 8 个这样的单元;若每个单元为 32 位,则有 2 个这样的单 元,每条多媒体指令同时对几个数据单元进行操作,从而实现 空间上的并行性,即单指令流多数据流(SIMD)[5]。 “龙芯”的SIMD技术比较适合在对相邻数据做同样处理 的场合,即对密集型的数据处理来说, SIMD 对程序加速效果 非常明显。利用这种特点为降低去块效应滤波器的计算复杂 度从而提高解码效率提供了可能 [6]。下面描述了采用“龙芯” 多媒体指令优化 RealVideo 解码中去块效应滤波系统的具体 设计和实现。”
 
————《基于龙芯SIMD技术的RealVideo去块滤波优化》吴少刚



1 龙芯SIMD技术
 
1 . 1 龙芯多媒体指令执行单元
龙芯3A处理器把多媒体处理和符合 ANSI / IEEE 754 - 1985标准的浮点运算在FPU协处理器上进行合理复用,能 够处理龙芯自定义的千余条LoongSIMD指令。龙芯 FPU 包含 FALU1和 FALU2两个功能处理单元,其中 FALU1 通过指令编码的FMT域扩展来复用SIMD媒体操作。浮点 队列每个时钟周期可以向FALU1和FALU2各发射1条指 令,而浮点寄存器文件可以为FALU1和FALU2各提供三 读一写的4个专用端口。 在FPU 寄存器定义上,LoongISA 与 MIPS64 兼容, 仅在32个64位浮点寄存器的定义上略有区别,即当Status 控制寄存器的 FR位为1,表示32个64位浮点寄存器可 用;当FR位为0,MIPS64表示有32个32位浮点寄存器 或16个64位浮点寄存器可用,而LoongISA表示16个32 位浮点寄存器或16个64位浮点寄存器可用,这是沿袭了 MIPS R10000的用法。龙芯3A多媒体指令集实现了32个 浮点寄存器的复用,即多媒体指令像普通浮点指令一样在 寄存器重命名时分配物理浮点寄存器,混合执行时无需任 何状态切换,不同的是多媒体指令不产生任何算术类例外。 为了处理溢出,龙芯处理器定义了3种新的运算类型,即 直接抛弃最高溢出位的反绕运算、有符号饱和运算和无符 号饱和运算。
 
1 . 2 LoongISA包裹数据类型 
为了处理多媒体数据,LoongISA 引入包裹(Packed)数据类型。一个包裹可以是一个连续的8位字节、16位半 字、32位字或64位双字,这样一个64位的浮点寄存器可 以装入8个单字节包裹、4个半字包裹、2个字包裹或1个 双字包裹。包裹的整形数据类型有两种表示格式:无符号 数和有符号数。当表示有符号数时,用最高位来表示符号。 龙芯的LoongSIMD多媒体指令可以同时对寄存器中的多个 包裹执行同样的运算,有利于提高图像计算的并行处 理效率。
 
1 . 3 LoongISA多媒体指令
为了支持多媒体处理,LoongISA 中的 LoongSIMD指 令变得非常复杂,在多媒体优化中经常用到的指令包括: 加法减法指令、乘法和乘加指令、逻辑运算指令、平均值 指令、移位指令、无符号减取绝对值指令、比较赋值指令、 打包和解包指令等,这些指令的设计思想与 MMX/SSE/ SSE2指令类似,相关指令规格说明参见龙芯3A处理器用 户手册[10]。“
 
————《基于龙芯SIMD技术的H.264视频解码优化》顾丽红
 


本来《龙芯3A处理器用户手册》(这里的3A即为3A1000)在草稿阶段还有指令规格说明的片段,但在正式版上就没了!
 
而上面的两篇论文其实都是有关LoongMMI的论文,其中的龙芯SIMD并非指的是发布会上的1014条LoongSIMD指令。更无语的是,那1014条LoongSIMD除了子集LoongMMI在手册中列出外,其他的指令都没有列出。这就导致LoongSIMD的1014条指令在网上一直无法查证。所以在今年前半年网上就有声音说龙芯砍掉了1014条LoongSIMD指令,只用上了MIPS MSA指令集模块。龙芯的LSX和LASX也是一直没有公开过更多的资料。虽然我手上有相关的bintuils Git patch,能看得到这些指令的助记符和Opcode,但就是无法在上游的任何一个版本中把patch打上去,因为龙芯自己cgit上的bintuils和上游的在文件内的差别太大了,我也不敢随便打上去。
 
龙芯的爱好者和社区的开发者一直想要相关资料和指令集手册,甚至国外的开源社区的人也希望有相关资料。

Snipaste_2020-04-19_18-10-20.png


微信图片_20200419124618.jpg

 
 
龙芯一直不公开资料的行为已经被很多社区成员和爱好者所厌恶。

Snipaste_2020-04-19_17-24-53.png

 

Snipaste_2020-04-19_17-04-39.png

 

Snipaste_2020-04-19_12-46-42.png

 
 
这样做的同时也导致龙芯在第三方的实测性能跑分中成绩惨不忍睹。资料不公开,社区的爱好者和开发者就没法对龙芯进行优化,而龙芯自己又不在上游upstream自己的优化,导致底层的软件例如OS、编译链、C库都缺乏优化。这就导致本身是以能用为目的的MIPS架构被龙芯使用后在第三方测试下不开-march=loongson3a、-march=gs464e等编译器微架构选项下所测得的SPEC2006的成绩和官方的经过优化后的成绩有很大的出入。龙芯的生态是建立在MIPS之上的,而进5年来MIPS的生态日渐凋零,基础设施急需翻新和重建,但龙芯却并未接管上游社区的MIPS分支,没有扛起MIPS生态的大旗。
 
龙芯在市场上坚持安可信创政务这一单一市场,但其他的厂商早已积极拓展市场范围,导致今年一季度龙芯只同比增长30%,而君正在一季度反而增长达到了4倍左右。当然,不能因为利润增长幅度小就认为别人赚不到钱,看绝对数值,全志赚的钱反而比君正多。
 

TIM图片20200419141802.jpg


TIM图片20200419190456.jpg

 
 
相对于君正,指令集等等资料官网上都有得查询,而且有很多资料是提供中英文两个版本的。开发板官网上就能查询得到并且很方便就找到购买渠道进行购买,相关手册也有。君正自己扩展的MXU和MXU2指令集,也是开放下载的,而且君正也提供已经打好相关补丁的工具链。
 
君正全志作为小公司,规模,背景,技术实力都比不上龙芯,但过得都不比龙芯差多少,主要就是因为态度更包容,视野更广阔,拓展了更多的市场。绝对数值上龙芯更高,但利润率和人均值上面君正更高。
 
除了君正,飞腾、兆芯都在积极拓展市场。现在兆芯的产品新闻基本上都能做到一周出一条有关OEM推出新产品的新闻。飞腾已经适配了Windows10 For ARM了。
 
龙芯现在还没到能对市场挑三拣四的层次,该包容的得包容,该当孙子的得当孙子,不能遮住眼睛只幻想着当老子。不然就像清末时期那样,沉浸于天朝大国的幻想之中并闭关锁国。
 

Snipaste_2020-04-19_18-35-22.png


Snipaste_2020-04-19_18-35-39.png


Snipaste_2020-04-19_18-35-59.png

 
(以上图片来自匿名消息)
 
对市场的态度应该是只要有利润,不亏,就应该放下身段去拼一把,相对于君正、全智那两家,龙芯的先天条件要好得多了,别人能做到的龙芯没理由做不到,至于为什么现在龙芯觉得人手不够做不到,那只是龙芯实际上吃苦耐劳和工作效率不如别人。尽管龙芯自认为很能吃苦,效率很高,但实际上这只是放在几家体制内企业之间来比。
 
相比真正在市场上摸爬滚打的企业来说,龙芯可以说是养老院了。俗话说慈不掌兵,龙芯想要能在信创以及其他方面在面对华为时还有招架之力,必须要改变这种状态。
 
龙芯官方(管理层)真的应该反思自己的种种行为(不仅是资料、指令集手册不公开,还有其他一系列操作例如违反GPL协议的闭源、只专注于单一市场等等),并且要快速改正。不然到最后就是龙芯死,社区散。
 
( 2 )逸闻趣事
 
上面说了这么多有关严肃问题的话,下面我们就轻松点。
 
还记得上文所说的LoongMMI又称Godson-MMX吗?
 
还记得论文中所说的LoongMMI是MMX、SSE、SSE2取长补短后的结果吗?
 
你以为这是偶然?
 
前几天在网上发现了一份GS464V R1的指令集列表(不包含LoongBT),其中就出现了很多有关以前龙芯自己添加的向量指令集。
 
上网搜其中的“VBCMULADDPD”这种AVX指令的名称,你就能发现其中有一篇有关龙芯3B1500的英文文章。
 
惊了,以前的GS464V R1的向量指令集怕不是照着Intel的AVX做出来的!
 
其中有一个让人匪夷所思的指令:
 

Snipaste_2020-04-19_09-32-16.png

 
 
vstql?是在说向量(vector)标量(scalar)太强了(tql)?
 

TIM图片20200418224129_(4).jpg

 
 
当然,龙芯3B1500所添加的向量指令还是有资料描述的:
 


2. 1 龙芯3B SIMD 指令集
 
龙芯3B 是一款 8 核处理器,每个处理器核设计了向量 运算部件和128 个寄存器的向量寄存器堆. 龙芯3B 没有专门 设计浮点部件和浮点寄存器,向量运算部件承担着所有浮点 运算的任务,并且将前32 个向量寄存器当作浮点寄存器使用. 龙芯3B 的向量寄存器宽度为256 位, SIMD 运算指令一 次对4 个双字,或8 个字,或16 半字,或32 个字节进行运算. 而龙芯3B 数据访问的带宽为 128 位,这样一次向量运算,需 要两次数据搬运,给编译器实现自动向量化提出了挑战. 除了算术运算指令和访存指令外,龙芯 3B 还根据应用 需要,设计大量特定应用性能加速指令,如 FFT 指令等,这类 指令很难通过自动向量化方法由编译器自动生成. 对于该类 指令,通过在编译器中设计 Builtin 函数,对其进行包装,用户 通过像调用库函数一样,调用该类指令。
 
2. 2. 2 SIMD 运算
 
龙芯3B 设计了大量的SIMD 运算指令,包括定点算术运 算,单精度的浮点算术运算,双精度的浮点算术运算等. 数据 打包加载到向量寄存器中,向量运算部件一次对多个数据进 行运算,运算的结果再存储到内存中
 
2. 3 Builtin 函数支持
 
龙芯3B 设计了300 多条向量指令,而自动向量化方法只 能自能自动生成部分向量指令,如加减乘除运算指令等,并不 能自动生成所有的向量指令. 对于这类指令的使用,用户可以 通过手写汇编来加速应用程序的性能,但是手写汇编效率低, 程序的可读性差,兼容性不好.
 
————《龙芯3B的SIMD编译优化及分析》彭飞


还有,为何手册里面说2K1000没有实现LoongCAM,但在cgit上的buntuils里面却加入了GS264支持LoongCAM的说明?
 

Snipaste_2020-04-19_20-15-30.png


Snipaste_2020-04-19_20-13-31.png

 
 
更为何在FFmpeg Git 上说2K1000添加了对MSA2.0的支持?
 

Snipaste_2020-04-19_20-19-05.png

 
 
龙芯的LoongBT指令集目前有公开记载使用过的情况也就只有在《龙芯的足迹》之中的两篇文章当中,但龙芯从未把指令集的使用细节公开过。
 
4、后记
这篇文章又拖了我一天的时间进行复习……啊算了算了,复习去了。
 
本文章的非论文文字和图片允许在CC-BY-SA 3.0协议四和GNU自由文档许可证下修改和再使用。

请问哪里能下载到《龙芯指令集手册》?

xen0n 回复了问题 • 7 人关注 • 8 个回复 • 3632 次浏览 • 2020-04-18 14:19 • 来自相关话题

7A桥片支持的PCIe 2.0问题

xen0n 回复了问题 • 4 人关注 • 3 个回复 • 528 次浏览 • 2020-03-02 12:32 • 来自相关话题

龙芯3a4000实测不如p4,官方的能解释一下吗

回复

天高地厚 回复了问题 • 1 人关注 • 1 个回复 • 397 次浏览 • 2020-01-20 12:39 • 来自相关话题

中华开源测试希望对龙芯3a4000进行实测

回复

天高地厚 发起了问题 • 1 人关注 • 0 个回复 • 261 次浏览 • 2020-01-20 12:37 • 来自相关话题

条新动态, 点击查看
loongnix

loongnix 回答了问题 • 2017-02-14 09:01 • 1 个回复 不感兴趣

3B3000是否有专门的数据手册?

赞同来自:

没有单独的手册,跟3A3000是一样的。
没有单独的手册,跟3A3000是一样的。
loongnix

loongnix 回答了问题 • 2017-02-14 09:02 • 1 个回复 不感兴趣

3B3000 CPU管脚C19的问题

赞同来自:

这个电压需要改为1.8V。
这个电压需要改为1.8V。
loongnix

loongnix 回答了问题 • 2017-02-14 09:02 • 1 个回复 不感兴趣

3B3000 CPU管脚A35的问题

赞同来自:

是的,改为1.8V分压。
是的,改为1.8V分压。
loongnix

loongnix 回答了问题 • 2017-02-14 09:04 • 1 个回复 不感兴趣

3B3000 EJTAG问题

赞同来自:

以下面这个引脚定义为准,其中5脚是TDO

 
以下面这个引脚定义为准,其中5脚是TDO

 
举爪为证

举爪为证 回答了问题 • 2017-02-20 10:37 • 4 个回复 不感兴趣

3A3000处理器性能咨询

赞同来自:

可以给您一个测试数据做对比:
硬件平台:3A3000_780E单路开发板
固件:Loongson-PMON-V3.3.0(2016-09-28)
编译器:gcc-4.9.3
操作系统:loongnix-20161130
SPECcpu2006测试结果:
单线程... 显示全部 »
可以给您一个测试数据做对比:
硬件平台:3A3000_780E单路开发板
固件:Loongson-PMON-V3.3.0(2016-09-28)
编译器:gcc-4.9.3
操作系统:loongnix-20161130
SPECcpu2006测试结果:
单线程:
整点:10.6
浮点:9.56
4线程:
整点:34.9
浮点:30.8


 
qtwebengine可以编译通过,并正常运行,会在后续版本进行集成
qtwebengine可以编译通过,并正常运行,会在后续版本进行集成
water

water 回答了问题 • 2017-09-20 23:12 • 8 个回复 不感兴趣

请问哪里能下载到《龙芯指令集手册》?

赞同来自:

http://dev.lemote.com/files/document/loongson/godson-MMX.pdf
  http://dev.lemote.com/files/document/loongson/SIMD%E6%8C%87%E4%BB... 显示全部 »
http://dev.lemote.com/files/document/loongson/godson-MMX.pdf
  http://dev.lemote.com/files/document/loongson/SIMD%E6%8C%87%E4%BB%A4%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8Cv0.1.pdf  
 
http://jackslab.org/people/comcat/

看看这个能用不
还在生产;这是公司电话64848899,你打电话咨询,前台会转相关同事
还在生产;这是公司电话64848899,你打电话咨询,前台会转相关同事

3A3000处理器性能咨询

赤子之心 回复了问题 • 5 人关注 • 4 个回复 • 4208 次浏览 • 2018-06-23 11:04 • 来自相关话题

LS3A4K的Python如何使用sympy pymysql talib以及jupyter?

回复

tangyuan 回复了问题 • 3 人关注 • 2 个回复 • 176 次浏览 • 2020-08-12 13:27 • 来自相关话题

openEuler 龙芯版从哪里下载呀?

回复

gugudu 发起了问题 • 1 人关注 • 0 个回复 • 166 次浏览 • 2020-07-26 10:49 • 来自相关话题

这个板谁用过?具体型号是什么?

回复

guoissac 发起了问题 • 1 人关注 • 0 个回复 • 132 次浏览 • 2020-06-21 00:22 • 来自相关话题

: 请用准确的语言描述您发布的问题思想

回复

gouguan 发起了问题 • 1 人关注 • 0 个回复 • 151 次浏览 • 2020-05-25 22:11 • 来自相关话题

LS3A3000H-UL和LS3A3000-LP的替代性

回复

lgwqp 发起了问题 • 1 人关注 • 0 个回复 • 207 次浏览 • 2020-05-14 16:31 • 来自相关话题

请问哪里能下载到《龙芯指令集手册》?

回复

xen0n 回复了问题 • 7 人关注 • 8 个回复 • 3632 次浏览 • 2020-04-18 14:19 • 来自相关话题

7A桥片支持的PCIe 2.0问题

回复

xen0n 回复了问题 • 4 人关注 • 3 个回复 • 528 次浏览 • 2020-03-02 12:32 • 来自相关话题

龙芯3a4000实测不如p4,官方的能解释一下吗

回复

天高地厚 回复了问题 • 1 人关注 • 1 个回复 • 397 次浏览 • 2020-01-20 12:39 • 来自相关话题

中华开源测试希望对龙芯3a4000进行实测

回复

天高地厚 发起了问题 • 1 人关注 • 0 个回复 • 261 次浏览 • 2020-01-20 12:37 • 来自相关话题

开发者计划的主板能从pmon换成固件么?

回复

gugudu 回复了问题 • 3 人关注 • 3 个回复 • 831 次浏览 • 2019-06-25 15:14 • 来自相关话题

一篇有关 LoongISA 的黑文

windows1089 发表了文章 • 0 个评论 • 321 次浏览 • 2020-04-19 21:21 • 来自相关话题

1、引言2020年4月17日,在日常看中文维基上的监视列表时,发现有人竟然给我的LoongMMI条目挂关注度模版,并且提议合并到LoongISA条目。 ...查看全部
1、引言2020年4月17日,在日常看中文维基上的监视列表时,发现有人竟然给我的LoongMMI条目挂关注度模版,并且提议合并到LoongISA条目。
Snipaste_2020-04-18_22-09-31.png



Snipaste_2020-04-18_22-09-16.png

当时我认为这是在挑衅我不会查有关龙芯的资料,于是我就花了15分钟找到了有关龙芯SIMD指令优化H.264视频解码的论文,并且暴力删了模版。
Snipaste_2020-04-18_22-09-56.png


在查找的过程中,偶然看到有人在观察者网的风闻社区讨论龙芯3A4000的指令集。

Snipaste_2020-04-18_22-19-50.png

 
 
看了一下,我觉得还可以再写一篇文章来黑龙芯的LoongISA,顺便吐出一直想吐的槽。
 
2、初略介绍LoongISA
 LoongISA,简而言之就是现在龙芯所使用的指令集的架构的自称。LoongISA不仅包括全部MIPS基础指令集和部分扩展模块,也包括龙芯自己添加的指令集。
 
LoongISA从龙芯2E/F时就开始出现部分扩展指令集,在龙芯3A1000形成体系,在龙芯3A2000的发布会上正式向外界公开宣传,在龙芯3A4000时初具规格。
 
下面就按照龙芯芯片产品的发展顺序来介绍典型产品中LoongISA的变化。
 
( 1 )龙芯2E/F时代(GS464 R1
 
龙芯从龙芯2E/F时就开始在微架构中加入自己的指令集了。典型的就是LoongMMI,也被称为LoongSIMD(龙芯SIMD),亦被称为Godson-MMX。网上至今还能查询到一些有关针对龙芯2F处理器的优化文章和对LoongMMI优化的论文。
 
( 2 )龙芯3A1000时代(GS464 R2 / GS464V R1
 
从龙芯3A1000时代开始龙芯就往微架构里面添加大量的指令集并开始初步形成LoongISA体系(LoongEXT + LoongMMI + LoongCAM + LoongBT x86二进制翻译部分)。龙芯在龙芯3B1000/1500 的 GS464V R1 中添加了大量的向量指令集,但一直没有公开指令集手册。
 
( 3 )龙芯3A2000时代(GS464E / GS264
 
在龙芯3A2000的发布会上龙芯正式对外公开宣传LoongISA。此时的GS464E为LoongISA1.0架构。LoongISA1.0包括MIPS64R2 + MIPS DSP + MIPS VZ + LoongEXT1/2 + LoongMMI + LoongCAM + LoongBT + LoongVZ,官方在发布会上还说添加了1014条LoongSIMD指令。在龙芯2K1000中,只包含了MIPS64R2 + MSA1.0 + LoongEXT1/2 + LoongMMI + LoongCAM + LoongBT
 
( 4 )龙芯3A4000时代(GS464V R2
 
龙芯3A4000相对于上一代LoongISA1.0添加了更多的指令集,并形成了LoongISA2.0。
 
在编译链层面龙芯3A4000(GS464V R2)依然是 MIPS64R2。其添加的指令集扩展可以用一张表来列出。
 

Snipaste_2020-04-19_20-50-38.png


Snipaste_2020-04-19_20-50-59.png

 
 
表格的指令集名称皆为缩写。其中,LCAMP即为LoongCAM,LVZP即为新版LoongVZ,LoongISA1.0中的LoongVZ已被删去。
 
3、详细吐槽
( 1 )资料匮乏
 
龙芯官方有关LoongISA的资料实在是太少了!太少了!太少了!现在唯一能查到指令集细节的指令集扩展就只有LoongMMI了。其他的要么只是在官方的手册中列出来,要么只给授权用户,要么什么都没有。
 

Snipaste_2020-04-19_17-05-49.png

 
 
这样就导致了网上很多有关龙芯自己扩展指令集的猜测和抹黑。例如龙芯从发布会公布了LoongSIMD后一直没有继续公开其具体细节,可能很多人还不知道LoongMMI是其子集。我在网上查找了相关资料后,只在两篇论文里面查找到相关描述:


3.1 “龙芯” 处理器 SIMD 技术简介
 
“龙芯”系列处理器是中国科学院计算所研制的具有自主 知识产权的通用处理器,具有低功耗,低成本的特点。64 位 “龙芯”二号增强型处理器采用 SIMD 技术,通过扩展多媒体 指令集实现对多媒体应用的指令级支持。SIMD 即单指令多 数据流,是一种典型的并行数据处理技术。处理器把输入的 数据分解为多个较短的数据,然后由单指令并行操作,从而提 高处理海量、可分解数据的能力。“龙芯”的多媒体指令吸取 了 MMX、 SSE 的优秀思想,进行了特色设计,支持基于字节、 半字、字以及双字的整数操作,直接使用FPU 的 32 个 64 位浮 点寄存器作为多媒体寄存器。该类指令的操作对象为 64 位, 可以分割为 8*8, 16*4, 32*2, 64*1。如果每个数据单元为 8 位, 则有 8 个这样的单元;若每个单元为 32 位,则有 2 个这样的单 元,每条多媒体指令同时对几个数据单元进行操作,从而实现 空间上的并行性,即单指令流多数据流(SIMD)[5]。 “龙芯”的SIMD技术比较适合在对相邻数据做同样处理 的场合,即对密集型的数据处理来说, SIMD 对程序加速效果 非常明显。利用这种特点为降低去块效应滤波器的计算复杂 度从而提高解码效率提供了可能 [6]。下面描述了采用“龙芯” 多媒体指令优化 RealVideo 解码中去块效应滤波系统的具体 设计和实现。”
 
————《基于龙芯SIMD技术的RealVideo去块滤波优化》吴少刚



1 龙芯SIMD技术
 
1 . 1 龙芯多媒体指令执行单元
龙芯3A处理器把多媒体处理和符合 ANSI / IEEE 754 - 1985标准的浮点运算在FPU协处理器上进行合理复用,能 够处理龙芯自定义的千余条LoongSIMD指令。龙芯 FPU 包含 FALU1和 FALU2两个功能处理单元,其中 FALU1 通过指令编码的FMT域扩展来复用SIMD媒体操作。浮点 队列每个时钟周期可以向FALU1和FALU2各发射1条指 令,而浮点寄存器文件可以为FALU1和FALU2各提供三 读一写的4个专用端口。 在FPU 寄存器定义上,LoongISA 与 MIPS64 兼容, 仅在32个64位浮点寄存器的定义上略有区别,即当Status 控制寄存器的 FR位为1,表示32个64位浮点寄存器可 用;当FR位为0,MIPS64表示有32个32位浮点寄存器 或16个64位浮点寄存器可用,而LoongISA表示16个32 位浮点寄存器或16个64位浮点寄存器可用,这是沿袭了 MIPS R10000的用法。龙芯3A多媒体指令集实现了32个 浮点寄存器的复用,即多媒体指令像普通浮点指令一样在 寄存器重命名时分配物理浮点寄存器,混合执行时无需任 何状态切换,不同的是多媒体指令不产生任何算术类例外。 为了处理溢出,龙芯处理器定义了3种新的运算类型,即 直接抛弃最高溢出位的反绕运算、有符号饱和运算和无符 号饱和运算。
 
1 . 2 LoongISA包裹数据类型 
为了处理多媒体数据,LoongISA 引入包裹(Packed)数据类型。一个包裹可以是一个连续的8位字节、16位半 字、32位字或64位双字,这样一个64位的浮点寄存器可 以装入8个单字节包裹、4个半字包裹、2个字包裹或1个 双字包裹。包裹的整形数据类型有两种表示格式:无符号 数和有符号数。当表示有符号数时,用最高位来表示符号。 龙芯的LoongSIMD多媒体指令可以同时对寄存器中的多个 包裹执行同样的运算,有利于提高图像计算的并行处 理效率。
 
1 . 3 LoongISA多媒体指令
为了支持多媒体处理,LoongISA 中的 LoongSIMD指 令变得非常复杂,在多媒体优化中经常用到的指令包括: 加法减法指令、乘法和乘加指令、逻辑运算指令、平均值 指令、移位指令、无符号减取绝对值指令、比较赋值指令、 打包和解包指令等,这些指令的设计思想与 MMX/SSE/ SSE2指令类似,相关指令规格说明参见龙芯3A处理器用 户手册[10]。“
 
————《基于龙芯SIMD技术的H.264视频解码优化》顾丽红
 


本来《龙芯3A处理器用户手册》(这里的3A即为3A1000)在草稿阶段还有指令规格说明的片段,但在正式版上就没了!
 
而上面的两篇论文其实都是有关LoongMMI的论文,其中的龙芯SIMD并非指的是发布会上的1014条LoongSIMD指令。更无语的是,那1014条LoongSIMD除了子集LoongMMI在手册中列出外,其他的指令都没有列出。这就导致LoongSIMD的1014条指令在网上一直无法查证。所以在今年前半年网上就有声音说龙芯砍掉了1014条LoongSIMD指令,只用上了MIPS MSA指令集模块。龙芯的LSX和LASX也是一直没有公开过更多的资料。虽然我手上有相关的bintuils Git patch,能看得到这些指令的助记符和Opcode,但就是无法在上游的任何一个版本中把patch打上去,因为龙芯自己cgit上的bintuils和上游的在文件内的差别太大了,我也不敢随便打上去。
 
龙芯的爱好者和社区的开发者一直想要相关资料和指令集手册,甚至国外的开源社区的人也希望有相关资料。

Snipaste_2020-04-19_18-10-20.png


微信图片_20200419124618.jpg

 
 
龙芯一直不公开资料的行为已经被很多社区成员和爱好者所厌恶。

Snipaste_2020-04-19_17-24-53.png

 

Snipaste_2020-04-19_17-04-39.png

 

Snipaste_2020-04-19_12-46-42.png

 
 
这样做的同时也导致龙芯在第三方的实测性能跑分中成绩惨不忍睹。资料不公开,社区的爱好者和开发者就没法对龙芯进行优化,而龙芯自己又不在上游upstream自己的优化,导致底层的软件例如OS、编译链、C库都缺乏优化。这就导致本身是以能用为目的的MIPS架构被龙芯使用后在第三方测试下不开-march=loongson3a、-march=gs464e等编译器微架构选项下所测得的SPEC2006的成绩和官方的经过优化后的成绩有很大的出入。龙芯的生态是建立在MIPS之上的,而进5年来MIPS的生态日渐凋零,基础设施急需翻新和重建,但龙芯却并未接管上游社区的MIPS分支,没有扛起MIPS生态的大旗。
 
龙芯在市场上坚持安可信创政务这一单一市场,但其他的厂商早已积极拓展市场范围,导致今年一季度龙芯只同比增长30%,而君正在一季度反而增长达到了4倍左右。当然,不能因为利润增长幅度小就认为别人赚不到钱,看绝对数值,全志赚的钱反而比君正多。
 

TIM图片20200419141802.jpg


TIM图片20200419190456.jpg

 
 
相对于君正,指令集等等资料官网上都有得查询,而且有很多资料是提供中英文两个版本的。开发板官网上就能查询得到并且很方便就找到购买渠道进行购买,相关手册也有。君正自己扩展的MXU和MXU2指令集,也是开放下载的,而且君正也提供已经打好相关补丁的工具链。
 
君正全志作为小公司,规模,背景,技术实力都比不上龙芯,但过得都不比龙芯差多少,主要就是因为态度更包容,视野更广阔,拓展了更多的市场。绝对数值上龙芯更高,但利润率和人均值上面君正更高。
 
除了君正,飞腾、兆芯都在积极拓展市场。现在兆芯的产品新闻基本上都能做到一周出一条有关OEM推出新产品的新闻。飞腾已经适配了Windows10 For ARM了。
 
龙芯现在还没到能对市场挑三拣四的层次,该包容的得包容,该当孙子的得当孙子,不能遮住眼睛只幻想着当老子。不然就像清末时期那样,沉浸于天朝大国的幻想之中并闭关锁国。
 

Snipaste_2020-04-19_18-35-22.png


Snipaste_2020-04-19_18-35-39.png


Snipaste_2020-04-19_18-35-59.png

 
(以上图片来自匿名消息)
 
对市场的态度应该是只要有利润,不亏,就应该放下身段去拼一把,相对于君正、全智那两家,龙芯的先天条件要好得多了,别人能做到的龙芯没理由做不到,至于为什么现在龙芯觉得人手不够做不到,那只是龙芯实际上吃苦耐劳和工作效率不如别人。尽管龙芯自认为很能吃苦,效率很高,但实际上这只是放在几家体制内企业之间来比。
 
相比真正在市场上摸爬滚打的企业来说,龙芯可以说是养老院了。俗话说慈不掌兵,龙芯想要能在信创以及其他方面在面对华为时还有招架之力,必须要改变这种状态。
 
龙芯官方(管理层)真的应该反思自己的种种行为(不仅是资料、指令集手册不公开,还有其他一系列操作例如违反GPL协议的闭源、只专注于单一市场等等),并且要快速改正。不然到最后就是龙芯死,社区散。
 
( 2 )逸闻趣事
 
上面说了这么多有关严肃问题的话,下面我们就轻松点。
 
还记得上文所说的LoongMMI又称Godson-MMX吗?
 
还记得论文中所说的LoongMMI是MMX、SSE、SSE2取长补短后的结果吗?
 
你以为这是偶然?
 
前几天在网上发现了一份GS464V R1的指令集列表(不包含LoongBT),其中就出现了很多有关以前龙芯自己添加的向量指令集。
 
上网搜其中的“VBCMULADDPD”这种AVX指令的名称,你就能发现其中有一篇有关龙芯3B1500的英文文章。
 
惊了,以前的GS464V R1的向量指令集怕不是照着Intel的AVX做出来的!
 
其中有一个让人匪夷所思的指令:
 

Snipaste_2020-04-19_09-32-16.png

 
 
vstql?是在说向量(vector)标量(scalar)太强了(tql)?
 

TIM图片20200418224129_(4).jpg

 
 
当然,龙芯3B1500所添加的向量指令还是有资料描述的:
 


2. 1 龙芯3B SIMD 指令集
 
龙芯3B 是一款 8 核处理器,每个处理器核设计了向量 运算部件和128 个寄存器的向量寄存器堆. 龙芯3B 没有专门 设计浮点部件和浮点寄存器,向量运算部件承担着所有浮点 运算的任务,并且将前32 个向量寄存器当作浮点寄存器使用. 龙芯3B 的向量寄存器宽度为256 位, SIMD 运算指令一 次对4 个双字,或8 个字,或16 半字,或32 个字节进行运算. 而龙芯3B 数据访问的带宽为 128 位,这样一次向量运算,需 要两次数据搬运,给编译器实现自动向量化提出了挑战. 除了算术运算指令和访存指令外,龙芯 3B 还根据应用 需要,设计大量特定应用性能加速指令,如 FFT 指令等,这类 指令很难通过自动向量化方法由编译器自动生成. 对于该类 指令,通过在编译器中设计 Builtin 函数,对其进行包装,用户 通过像调用库函数一样,调用该类指令。
 
2. 2. 2 SIMD 运算
 
龙芯3B 设计了大量的SIMD 运算指令,包括定点算术运 算,单精度的浮点算术运算,双精度的浮点算术运算等. 数据 打包加载到向量寄存器中,向量运算部件一次对多个数据进 行运算,运算的结果再存储到内存中
 
2. 3 Builtin 函数支持
 
龙芯3B 设计了300 多条向量指令,而自动向量化方法只 能自能自动生成部分向量指令,如加减乘除运算指令等,并不 能自动生成所有的向量指令. 对于这类指令的使用,用户可以 通过手写汇编来加速应用程序的性能,但是手写汇编效率低, 程序的可读性差,兼容性不好.
 
————《龙芯3B的SIMD编译优化及分析》彭飞


还有,为何手册里面说2K1000没有实现LoongCAM,但在cgit上的buntuils里面却加入了GS264支持LoongCAM的说明?
 

Snipaste_2020-04-19_20-15-30.png


Snipaste_2020-04-19_20-13-31.png

 
 
更为何在FFmpeg Git 上说2K1000添加了对MSA2.0的支持?
 

Snipaste_2020-04-19_20-19-05.png

 
 
龙芯的LoongBT指令集目前有公开记载使用过的情况也就只有在《龙芯的足迹》之中的两篇文章当中,但龙芯从未把指令集的使用细节公开过。
 
4、后记
这篇文章又拖了我一天的时间进行复习……啊算了算了,复习去了。
 
本文章的非论文文字和图片允许在CC-BY-SA 3.0协议四和GNU自由文档许可证下修改和再使用。

龙芯3A3000笔记本玩机笔记

lophyxp 发表了文章 • 0 个评论 • 494 次浏览 • 2020-01-20 09:31 • 来自相关话题

龙芯开发者商城,目前有一款龙芯3A3000处理器、AMD独显的笔记本。我有幸在哥们的帮助下弄到了一台。巧合的是近日Debian 10 (buster)也已经正是发布。于是就有了这一篇龙芯3A3000、AMD OLAND和Debian 10 buster的激情碰 ...查看全部
龙芯开发者商城,目前有一款龙芯3A3000处理器、AMD独显的笔记本。我有幸在哥们的帮助下弄到了一台。巧合的是近日Debian 10 (buster)也已经正是发布。于是就有了这一篇龙芯3A3000、AMD OLAND和Debian 10 buster的激情碰撞。

型号:L39  品牌 :龙芯

CPU :3A3000 15.5W 1.2GHz

系统内存:SO DIMM DDR3 4G
显存:动态显存分配技术
屏幕:14.0" 16:9 1366*768 pixels 或 1920*1080(option) LVDS 或 eDP 接口(Option)
显卡:独显: AMD R5 340 2G (Option)
键盘:US
读卡器:支持 4 in1(SD,SDHC, SDXC, MMC)
储存: M.2(Single Side) SATA2.0 120G
无线网络:WIFI b/g/n with M.2 Interface
电源:AC 100~240V, DC 19V @90W
电池:聚合物电池, 15.2V 77.8Wh
尺寸:约 340*232*19.9mm

重量:约 1.9kg(含电池)

操作系统:预装深度、中标麒麟、普华(默认未激活,激活可补价)

 

赠品:送《龙芯应用开发标准教程》

debian buster on Loongson 3A3000 卓宜恒通 L39 laptop

一、镜像站点
查询https://www.debian.org/mirror
点击“包含debian/仓库的Debian镜像列表
选择ftp.cn.debian.org/debian
或者ftp2.cn.debian.org/debian
完整的debian镜像站点才会包含MIPS64el架构的软件包。龙芯使用debian的MIPS64el架构的软件包,不能使用AMD64架构的软件包。请一定注意这个区别。

二、安装Loongnix
去http://www.loongnix.org/index.php/Loongnix
下载loongnix-yyyymmdd.iso
然后准备一个8G容量的U盘,用dd命令把iso镜像刻录到U盘上。
dd if=loongnix-yyyymmdd.iso of=/dev/sdb bs=8M
插入U盘,用U盘启动3A3000笔记本,安装Loongnix。

三、制作Debian Install启动U盘
在镜像站点的debian/dists/buster/main/installer-mips64el/current/images/loongson-3/netboot/目录下,下载boot.cfg和initrd.gz两个文件。那个vmlinux-4.16.0-2-loongson-3不要。
使用Loongnix的内核、模块替换Debian Installer原有的内核、模块。原有内核、模块不能启动3A3000。
解压缩initrd.gz更换lib/modules为Loongnix的,并加入lib/firmware。和loongnix的内核vmlinux-<version>-1.fc21.loongson.2.mips64el一起做成Debian Installer U盘。
gunzip initrd.gz
mkdir initrd.debian
cd initrd.debian
cpio -idvm < ../initrd
cd lib/modules
rm * -rf
cp /lib/modules/<version>.fc21.loongson.2.mips64el . -r
cd ..
mkdir firmware
cd firmware
cp /lib/firmware/radeon . -r
cp /lib/firmware/iwlwifi-* . -r
cd ../..
find . | cpio -c -o > ../initrd
cd ..
gzip initrd
挂载一个U盘,比如/dev/sdb,分区出/dev/sdb1,格式化为ext2格式,挂载到/media/usb
cp initrd.gz /media/usb
cp boot.cfg /media/usb
cp /boot/vmlinuz-<version>-1.fc21.loongson.2.mips64el /media/usb/vmlinux-4.16.0-2-loongson-3

四、安装Debian
用制作好的U盘启动笔记本,安装Debian。
安装好后,重启进入Loongnix,编辑/boot/boot.cfg
添加:
title 'Debian 10'
        kernel (wd0,0)/vmlinuz-4.19.5-1.fc28.lemote.1.mips64el
        initrd (wd0,0)/initramfs-4.19.5-1.fc28.lemote.1.mips64el.img
        args  root=/dev/mapper/vg-slash--debian
挂载debian的root到/media,编辑/media/etc/fstab,如下:
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/sda1        /boot           ext2    defaults        0       2
/dev/mapper/vg-slash--debian /               ext4    errors=remount-ro 0       1
/dev/mapper/vg-home--debian /home           ext4    defaults        0       2
/dev/mapper/vg-swap none            swap    sw              0       0

并将Loongnix的/lib/modules/* 复制到Debian的/lib/modules/目录下。

 

五、降级firefox和thunderbird软件
cd /var/cache/apt/archives
sudo apt install ./firefox-esr_52.9.0esr-1_mips64el.deb
sudo apt install ./firefox-esr-l10n-zh-cn_52.9.0esr-1_all.deb
就是进入/var/cache/apt/archives
直接安装低版本的软件,就降级了。
apt install <package>-<version> #网友博客这样说

六、标志firefox和thunderbird不升级
echo "firefox-esr hold" | sudo dpkg --set-selections
echo "thunderbird hold" | sudo dpkg --set-selections
查询当前系统内所有软件包状态:
sudo dpkg --get-selections
查询当前系统内被锁定不更新的软件包(hold):
sudo dpkg --get-selections | grep hold

七、安装KDE Plasma 5桌面环境

终于在debian buster上安装上KDE Plasma 5了。感谢@FlyGoat !是他提醒我,MIPS64el没有qtwebengine,有qtwebkit可以使用。
于是一搜索,发现debian buster mips64el有编译好的KDE Plasma 5包,直接安装就可以了。

sudo apt install aptitude tasksel
sudo aptitude install ~t^desktop$ ~t^kde-desktop$

sudo apt autoremove xfce4 xfce4-goodies

sudo apt install kazam goldendict telegram-desktop vim vim-gtk3

八、从fedora28中安装火狐的flash插件
sudo mount /dev/vg/slash-fedora /media
cd /media/usr/lib64/
ls libavcodec.so.56* libavformat.so.56* libavutil.so.54* libswresample.so.1* libvo-amrwbenc.so.0* libschroedinger-1.0.so.0* libopenjpeg.so.1*
cd /media/usr/lib64 && sudo cp -a libavcodec.so.56* libavformat.so.56* libavutil.so.54* libswresample.so.1* libvo-amrwbenc.so.0* libschroedinger-1.0.so.0* libopenjpeg.so.1* /usr/lib/mips64el-linux-gnuabi64/
cd /media/usr/lib64/mozilla/plugins && sudo cp libflashplayer.so /usr/lib/mozilla/plugins/

九、无声
貌似对ALC269VC芯片的支持有问题。等以后的开发吧。Loongnix上也有爆音的。

可以先用支持蓝牙立体声的蓝牙耳机先听着。效果很好。
apt install pulseaudio-module-bluetooth
pulseaudio-module-bluetooth估计已经替代了bluez-btsco的sco驱动和bluetooth-alsa的a2d驱动。这是个好趋势,以前是:声音程序 -> pulseaudio -> alsa -> a2d -> bluez -> A2DP bluetooth Device。现在是:声音程序 -> pulseaudio -> pulseaudio-module-bluetooth -> bluez -> A2DP bluetooth Device。
我用的蓝牙立体声耳机是科正A6L。

十、KDE的桌面特效
系统设置 -> 窗口管理 -> 任务切换器 -> 可视化 -> 封面切换
系统设置 -> 桌面行为 -> 桌面特效 -> 外观 -> 魔灯 /  焦点 -> 滑出 / 虚拟桌面切换动画 -> 桌面立方动画
系统设置 -> 桌面行为 -> 虚拟桌面 -> 桌面 -> 桌面数量=4 / 行数=2

十一、编译aqemu
确保/etc/apt/source.list包含以下行:
deb-src http://ftp.cn.debian.org/debian/ buster main
deb-src http://ftp.cn.debian.org/debian/ buster-updates main
创建一个临时目录
cd ~/下载
mkdir aqemu
cd aqemu
下载源代码
apt-get source aqemu
安装编译依赖包
apt-get build-dep aqemu
修改编译参数,并重新编译
cd aqemu-*/debian
vi control
Architecture: mips64el
:wq
cd ..
dpkg-buildpackage -us -uc


sudo vi /etc/network/interfaces.d/br0
auto br0

iface br0 inet dhcp
bridge_ports enp6s0


十二、录屏
sudo apt install kazam

十三、WPS
中标麒麟 源 @ baidu.com
http://download.cs2c.com.cn/neokylin/desktop/everything/7.2/ls_64/os/RPMS/wps-office-10.8.0.6682.professional.preload.sw.withsn-1.mips64el.rpm
http://mirror.lemote.com:8000/fedora-users/luoxiao/other/libpng/libpng12.so.0
sudo apt install rpm2cpio
cd /
rpm2cpio ~/下载/wps/wps-office-10.8.0.6682.professional.preload.sw.withsn-1.mips64el.rpm | sudo cpio -idvm
sudo cp libpng12.so.0 /opt/kingsoft/wps-office/office6/

sudo mount /dev/vg/slash-fedora /media/
sudo cp -a /media/usr/lib64/libssl.so.1* /opt/kingsoft/wps-office/office6/
sudo cp -a /media/usr/lib64/libcrypto.so.1* /opt/kingsoft/wps-office/office6/

十四、fcitx
im-config -a
确定

启用小企鹅输入法(Fcitx)!    确定

注销重登录

sudo apt install kde-config-fcitx

十五、自行编译kernel
配置initramfs包含必要radeon iwlwifi-8265 firmware
vi /usr/share/initramfs-tools/hooks/firmware_radeon_iwlwifi-8265
#!/bin/sh

PREREQ="udev"

prereqs()
{
    echo "$PREREQ"
}

case $1 in
prereqs)
    prereqs
    exit 0
    ;;
esac

. /usr/share/initramfs-tools/hook-functions

copy_exec /lib/udev/firmware.agent /lib/udev/

mkdir -p $DESTDIR/usr/lib/firmware
cp /lib/firmware/iwlwifi-8265* $DESTDIR/usr/lib/firmware/
cp /lib/firmware/radeon $DESTDIR/usr/lib/firmware/ -r

chmod a+x /usr/share/initramfs-tools/hooks/firmware_radeon_iwlwifi-8265
update-initramfs -c -k 4.20.13-gentoo-n64

下载
http://mirrors.163.com/kernel/v5.x/linux-5.0.tar.xz
tar xJvf linux-5.0.tar.xz
cp /boot/config-3.10.84-20.fc21.loongson.3.mips64el linux-5.0/.config
apt build-dep linux-image-4.19.0-2-loongson-3
cd linux-5.0/
make menuconfig
make deb-pkg LOCALVERSION=-lophyxp KDEB_PKGVERSION=$(make kernelversion)-1 -j5
update-initramfs -c -k 5.0.0-lophyxp

十六、RTS5139
https://github.com/asymingt/rts5139
与3.15.10相比除了缩进样式的改变以外,没有修改。
wget -c http://mirrors.163.com/kernel/v3.x/linux-3.15.10.tar.xz
tar xJvf linux-3.15.10.tar.xz
cd linux-3.15.10/drivers/staging
cp rts5139 ../../../linux-5.0/drivers/staging
cd ../../../linux-5.0/drivers/staging
vi Kconfig
f rts5208
O
source "drivers/staging/rts5139/Kconfig"
vi Makefile
f RTS5208
O
obj-$(CONFIG_RTS5139)       += rts5139/

cd ../../
make deb-pkg LOCALVERSION=-lophyxp-3 KDEB_PKGVERSION=$(make kernelversion)-3 -j5
update-initramfs -c -k 5.0.0-lophyxp-3


In file included from drivers/staging/rts5139/rts51x_transport.c:36:
drivers/staging/rts5139/rts51x.h: In function ‘get_current_time’:
drivers/staging/rts5139/rts51x.h:125:2: error: implicit declaration of function ‘do_gettimeofday’; did you mean ‘do_settimeofday64’? [-Werror=implicit-function-declaration]
  do_gettimeofday(&tv);
  ^~~~~~~~~~~~~~~
  do_settimeofday64

 

十七、即时通讯
apt install telegram-desktop


十八、设置hostname
su
hostname set-hostname loongson-L39
vi /etc/hostname
loongson-L39
vi /etc/hosts
127.0.0.1   loongson-L39

十九、blacklist radeon and enable vulkan
sudo vi /etc/modprobe.d/blacklist-radeon.conf
blacklist radeon

options amdgpu si_support=1
options amdgpu cik_support=0

options radeon si_support=0
options radeon cik_support=0

:w !sudo tree %

sudo vi /etc/apt/sources.list
%s/main/main\ non-free/g
:wq
sudo apt update
sudo apt install firmware-amd-graphics
sudo vi /etc/apt/sources.list
%s/non-free//g
:wq
sudo apt update

sudo vi /usr/share/initramfs-tools/hooks/firmware_radeon_iwlwifi-8265
#!/bin/sh

PREREQ="udev"
AMD_FIRMWARE_STRING="/lib/firmware/radeon/oland_ce.bin /lib/firmware/radeon/oland_mc.bin /lib/firmware/radeon/oland_me.bin /lib/firmware/radeon/oland_pfp.bin /lib/firmware/radeon/oland_rlc.bin /lib/firmware/radeon/oland_smc.bin /lib/firmware/radeon/TAHITI_uvd.bin"

prereqs()
{
        echo "$PREREQ"
}

case $1 in
prereqs)
        prereqs
        exit 0
        ;;
esac

. /usr/share/initramfs-tools/hook-functions

copy_exec /lib/udev/firmware.agent /lib/udev/

mkdir -p $DESTDIR/usr/lib/firmware
mkdir -p $DESTDIR/usr/lib/firmware/radeon
cp /lib/firmware/iwlwifi-8265* $DESTDIR/usr/lib/firmware/
cp $AMD_FIRMWARE_STRING $DESTDIR/usr/lib/firmware/radeon/

chmod a+x /usr/share/initramfs-tools/hooks/firmware_radeon_iwlwifi-8265
update-initramfs -c -k 5.0.0-lophyxp

sudo apt install mesa-vulkan-drivers libvulkan-dev

sudo apt install plasma-workspace-wayland libwayland-egl1-mesa qml-module-qtwayland-compositor libgles2-mesa kwin-wayland-backend-drm kwin-wayland-backend-wayland

二十、百度云盘
https://github.com/XuShaohua/bcloud
https://github.com/XuShaohua/bcloud-packages
<TODO://>

二十一、PyKDE
#PyKDE4
https://github.com/topics/pykde
https://github.com/sigoa/pykde4
https://github.com/KDE/pykde4
https://sigoa.github.io/pykde4/html/

#PyKDE5
https://cgit.kde.org/pykde5.git/
<TODO://>

二十二、Plymouth
# wiki.debian.org/plymouth
# Installation
sudo apt install plymouth plymouth-themes

# Configuation
sudo vi /etc/initramfs-tools/modules
#KMS
drm
#radeon modeset=1

# Themes
sudo plymouth-set-default-theme -l
sudo plymouth-set-default-theme -R moonlight #will auto update initramfs

# BootLoader
sudo vi /boot/boot.cfg
args root=/dev/mapper/vg-slash--debian quiet splash

二十三、{www,repo,forums}.debiancn.org

二十四、D-i
# `mr` is in the `myrepos` package
sudo apt install myrepos

git clone https://salsa.debian.org/installer-team/d-i.git
# almost 201MB transform on 230Kbps speed

cd d-i
./scripts/git-setup
mr -p checkout

apt-cache -n search debian-installer

二十五、更换9260网卡
sudo vi /usr/share/initramfs-tools/hooks/firmware_radeon_iwlwifi
#!/bin/sh

PREREQ="udev"
AMD_FIRMWARE_STRING="/lib/firmware/radeon/oland_ce.bin /lib/firmware/radeon/oland_mc.bin /lib/firmware/radeon/oland_me.bin /lib/firmware/radeon/oland_pfp.bin /lib/firmware/radeon/oland_rlc.bin /lib/firmware/radeon/oland_smc.bin /lib/firmware/radeon/TAHITI_uvd.bin"

prereqs()
{
        echo "$PREREQ"
}

case $1 in
prereqs)
        prereqs
        exit 0
        ;;
esac

. /usr/share/initramfs-tools/hook-functions

copy_exec /lib/udev/firmware.agent /lib/udev/

mkdir -p $DESTDIR/usr/lib/firmware
mkdir -p $DESTDIR/usr/lib/firmware/radeon
mkdir -p $DESTDIR/usr/lib/firmware/amdgpu
# cp /lib/firmware/iwlwifi-8265* $DESTDIR/usr/lib/firmware/
cp /lib/firmware/iwlwifi-9260* $DESTDIR/usr/lib/firmware/
cp $AMD_FIRMWARE_STRING $DESTDIR/usr/lib/firmware/radeon/
cp $AMD_FIRMWARE_STRING $DESTDIR/usr/lib/firmware/amdgpu/

二十六、插入鼠标禁用触摸板
sudo apt install xserver-xorg-input-synaptics

二十七、wayland
sudo apt install plasma-workspace-wayland
# plasma-workspace-wayland kwin-wayland-backend-drm kwin-wayland
# kwin_wayland --xwayland --libinput --exit-with-session=/usr/lib/mips64el-linux-gnuabi64/libexec/startplasma

# startplasma: Starting up...
# QSockeNotifier: Invalid socket 13 and type 'Read', disabling...
# EE failed to read Wayland events: Broken pipe
# 可能:其实只是拷贝数据时有时出错了。
# https://bbs.csdn.net/topics/390985190

 

新鲜的Debian 10 (buster) 3A3000 AMD oland tarball镜像
https://pan.baidu.com/s/1TGDCm6xJyASwpjDBDDeM0Q
提取码:plt9
欢迎试用。
有意见请保留,不要报告到lophyxpAT163DOTcom
关于AMD oland参看:AMDGPU - Gentoo Wiki
 

2k, 7A 自带的gpu

water 发表了文章 • 1 个评论 • 640 次浏览 • 2019-04-03 10:36 • 来自相关话题

2k, 7A 自带的gpu 为 gc1000   gc 系列的gpu 主要特性如下图:  
2k, 7A 自带的gpu 为 gc1000
 
gc 系列的gpu 主要特性如下图:
TIM图片20190403103307.png

 

2k, 7A 自带的gpu

water 发表了文章 • 0 个评论 • 324 次浏览 • 2019-04-03 10:34 • 来自相关话题

2k, 7A 自带的gpu 为 gc1000   gc 系列的gpu 主要特性如下图:  
2k, 7A 自带的gpu 为 gc1000
 
gc 系列的gpu 主要特性如下图:
TIM图片20190403103307.png

 

龙芯3A4000 与 龙芯3A3000 的性能比对及宇航芯片介绍

water 发表了文章 • 3 个评论 • 6537 次浏览 • 2019-03-27 15:18 • 来自相关话题

根据 在X86平台上的性能测试,编译器自动向量化可将SPEC CPU 的定点性能提高约5% ,浮点性能提高约15% 。龙芯 3A4000 使用3A3000 的 28nm 工艺,通 过 优 化 设 计 将 主 频 从 1.5GHz 提 高 到2.0GHz 。在相 ...查看全部
TIM截图20190327150103.jpg

根据 在X86平台上的性能测试,编译器自动向量化可将SPEC CPU 的定点性能提高约5% ,浮点性能提高约15% 。龙芯 3A4000 使用3A3000 的 28nm 工艺,通 过 优 化 设 计 将 主 频 从 1.5GHz 提 高 到2.0GHz 。在相同的工艺条件下,龙芯3A4000 性能为3A3000 的2倍。在此基础上,若使用更先进 的工艺技术将主频提高到2.5~3.0GHz ,则龙芯CPU 的 通 用 处 理 性 能 可 达 到 国 际 主 流 CPU 的水平。
 
 

2.jpg

 
高端系列使用0.13umSOI工艺将龙芯1E04和1F04升级为龙芯1E300和1F300。在功能上,龙芯1E300较1E04增加了一个Spacewire接口,其余不变。在性能上,龙芯1E300集成了64位双发射GS264处理器核,支持128位向量,主频提高到200MHz以上,运算能力达到400亿次/s,性能相比1E04提高了3~5倍。龙芯1F300的处理器核主频也相应提高,同时集成SpaceWire高速总线接口。
在提升抗辐照能力上,使用SOI工艺要优于使用体硅加固技术。龙芯1E300已于2018年推出,龙芯1F300预计于2019年推出。
龙芯中科还研制了抗辐照MCU龙芯1J,该芯片采用130nmFlash工艺,具有低功耗、高可靠、高集成度的优点,已于2018年推出。

依托北斗卫星专项,龙芯抗辐照CPU已在北斗装备星上得到应用。2015年3月31日,我国首颗IGSO新一代北斗导航卫星搭载龙芯1E04和1F04发射升空。2016年2月1日发射的新一代北斗导航中地球轨道(MEO)卫星,采用改版龙芯1E04和1F04芯片,工作状态良好。2018年,北斗三号6颗组网装备卫星上采用龙芯抗辐照1E04和1F04的终端处理器及平台控制载荷,工作状态良好。目前龙芯1E300已成功在北斗三号卫星上搭载试验,解决了我国航天工程中高性能抗辐照处理器受制于国外禁运的问题,实现了我国航天器国产化处理器在性能方面的跨越式发展。
 
 
基于龙芯抗辐照CPU可形成稳定的系列化系
统解决方案。龙芯1F04及1F300分别形成高低搭配的独立SoC解决方案。龙芯1E04+1F04及1E300+1F300分别形成高低搭配的CPU+桥片解决方案;龙芯1J则形成微控制单元(MCU)解决方案。其中:在卫星平台综合电子系统(星上数据处理系统)中,可采用龙芯1E(主处理器)十1F(协处理器)(桥片)的方案替代原先的AT695/AT697+FPGA扩展外部接口的方案。例如:北斗三号型号任务中,中国航天电子技术研究院研制的星务计算机系统首次采用龙芯1E300+1F设计方案替代原有的AT697方案。在卫星平台姿态控制载荷中,可采用龙芯1E+FPGA方案替代原有FPGA,AT697+FPGA和部分DSP+FPGA的方案。例如:北京航天时代光电科技有限公司的光纤陀螺、中国科学院成都光电技术研究所的太阳敏感器、中国科学院上海技术物理研究所的地球敏感器等均采用龙芯处理器替代方案。在就天工程应用上也可以考虑选用独立龙芯1F处理器替代原有进口的单片机(80C31,80C32等)、FPGA(30万门以下)和性能要求较低的数字信号处理器(DSP)。
现阶段,龙芯中科已掌握MIPS(microprocessor without interlocked pipod stages)指令集和处理器微结构设计,以及抗辐照加固技术、工艺及设计规范,设计研制了以LS1E和LS1F为代表的抗辐照处理器,其性能达到国外抗籍照处理器的指标。在航天型号任务中,采用MIPS架构的抗辐照处理器技术路线作为SPARC(scalable processor ARChitecture)架构技术路线的有力补充,能有效提升国产航天器综合电子系统的安全性和可靠性。在卫星平台和载荷中,也可采用龙芯抗辐照处理器的替代方案,将其作为主份或备份载荷,从而形成我国特有的国产化安全自主可控抗辐照处理器的体系。
 
数据来源:
第 36 卷 2019 年第 1 期
胡伟武:自主 CPU 发展道路及在航天领域应用

MIPS 指令集发展历史及 MIPS 公司主要产品

water 发表了文章 • 3 个评论 • 1291 次浏览 • 2019-01-29 17:25 • 来自相关话题

参考来源: http://crva.io/documents/OpenISA-OpenSourceChip-Report-v1p0.pdf MIPS 指令集 ...查看全部
参考来源: http://crva.io/documents/OpenISA-OpenSourceChip-Report-v1p0.pdf

微信图片_20190129172340.png


MIPS 指令集及架构在 2010 年以后发展迅速,至 2014 年的 5 年时间共发布了 4 个版本,在传统的整数浮点应用指令基础上逐步增加了多线程、 DSP 模块、 SIMD 模块以及虚拟化模块。这也与移动互联网应用的迅速发展时间相吻合,随着应用需求变化, MIPS 指令集以及架构也在迅速发展
 
TIM截图20190129172454.png

 
在 MIPS 指令集发展过程中,基本上严格保持新版本向后兼容的特点。比如MIPS Release5 可以向下兼容之前的所有指令集版本。但在最新发布的 MIPS Release 6 版本中,这种情况发生了变化。这个版本中增加了一些新的指令并对指令集进行了简化,删除了一些不常用的指令,重新排布了指令的编码,空余出了大量的指令槽用于将来的扩展。因此,可以把 MIPSRelease 6 版本看成一个几乎全新的定义。
 
MIPS 公司主要产品
自 2014 年发布 MIPS R6 版本之后, MIPS 公司的 IP Core 产品全面转向 MIPS R6 版本,形成覆盖高中低不同性能和应用需求的 Warrior 产品系列, 而把 R6 之前的产品全部归为 Classic 系列。 Warrior 产品系列又分为 M-Class, I-Class 和
P-Class 三个级别。 这三个级别的产品的特性如表 5 所示。

11212.png

从已有信息来看,自 2014 年 MIPS Release 6 发布以来,除 MIPS 公司自己的 Warrior 产品系列之外, 尚无第二个实现 MIPS Release 6 指令集的芯片。

MIPS 公司对 MIPS 开放计划进行了以下澄清:
1) 此次开放计划仅仅针对 MIPS 指令集的最新版本,即 2014 年发布的Release 6 版本。在开放计划中,并不包含早期版本(即 Release 5 或更早期)。不能把 MIPS 开放计划的授权与早期版本的授权混淆。
2) 如果一个公司开发了一个基于 MIPS 开放计划授权的实现,可以不需要开源这部分代码。
3) 合作伙伴如果加入 MIPS 开发计划并且通过认证,有机会把自己的服务放在 MIPS 开源计划中进行销售。
从以上信息可以知道, MIPS 开放计划并不是开放所有版本的 MIPS 指令集,而仅仅是最新的 MIPS Release 6 版本。从 MIPS Release 6 版本的文档可以知道,该版本并不与早期版本完全兼容,其中的修改甚至包括删除大量不常用指令,将回收的指令槽用于新增加的指令,在一定程度上几乎可以看成是一个全新的指
令集。由此可见, MIPS 开放计划中的 MIPS 指令集的初始生态环境并不乐观。这也是很少有产品采用基于 MIPS Release 6 指令集的 IP Core 的主要原因之一。
 

龙芯cpu 主频2.2G 以上,有图有真相

water 发表了文章 • 1 个评论 • 919 次浏览 • 2019-01-02 09:51 • 来自相关话题

   

TIM图片20190102094822.png

 
TIM图片20190102094813.jpg

 

MIPS CPU架构宣布开源

water 发表了文章 • 1 个评论 • 661 次浏览 • 2018-12-19 20:27 • 来自相关话题

Wave Computing宣布了一则重磅消息,正式启动MIPS Open项目,MIPS架构完全开源,免费提供给全球的开发者、合作伙伴、高校研究机构、客户。 MIPS开源社区将在2019年第一季度上线,届时会免费提供的MIPS IP和技术资源包括: ...查看全部
Wave Computing宣布了一则重磅消息,正式启动MIPS Open项目,MIPS架构完全开源,免费提供给全球的开发者、合作伙伴、高校研究机构、客户。
MIPS开源社区将在2019年第一季度上线,届时会免费提供的MIPS IP和技术资源包括:32/64位指令集Releas 6版本、SIMD扩展、DSP扩展、MT多线程、MCU微控制器、VZ虚拟化、microMIPS架构。
未来,任何人都可以自由获得以上资源,无需任何授权费、版权费,并能在全球范围内得到几百项专利的保护。
Wave Computing表示,更多的开源计划细节将在明年第一季度公布
 
貌似 龙芯 和君正买了 R5的指令集,并表示不跟进R6。不过除了R6,其他的都很适合。尤其是SIMD扩展、DSP扩展、MT多线程、VZ虚拟化 比较适合龙芯。 MCU微控制器 用于 1系列。

loongson3A3000 各种跑分结果

water 发表了文章 • 2 个评论 • 730 次浏览 • 2018-06-16 14:07 • 来自相关话题

龙芯 3a3000 开发板改水冷!

jiangtao9999 发表了文章 • 7 个评论 • 969 次浏览 • 2018-06-04 17:21 • 来自相关话题

感觉这个夏天能放心一些了。   龙芯就不能和某个散热器厂家合作弄个转换支架?我用的是九州风神的水冷。水冷头孔距 55mm ,如果再小一点,就能和龙芯的孔距一致了。 结果不得不找了个铝条做压条。结果 4cm 的螺丝居然还差一点 ...查看全部
感觉这个夏天能放心一些了。
 
龙芯就不能和某个散热器厂家合作弄个转换支架?我用的是九州风神的水冷。水冷头孔距 55mm ,如果再小一点,就能和龙芯的孔距一致了。
结果不得不找了个铝条做压条。结果 4cm 的螺丝居然还差一点,把铝条掰弯了才解决问题。
 
编译程序中:


[jiangtao@ls3a ~]$ sensors
cpu-hwmon-virtual-0
Adapter: Virtual device
CPU 0 Temperature:  +47.0°C

[jiangtao@ls3a ~]$



编译完等一会:


[jiangtao@ls3a srpm]$ sensors
cpu-hwmon-virtual-0
Adapter: Virtual device
CPU 0 Temperature:  +44.0°C

[jiangtao@ls3a srpm]$
 


机箱盖盖子?我已经不打算了。龙芯号称 30W 的制热能力,太强悍了。