处理器fedora13

fedora13  时间:2021-04-02  阅读:()
龙芯处理器应用常见问题解答(FAQ)2015年2月龙芯中科技术有限公司阅读指南本手册内容是对龙芯处理器产品常见问题的简要解析,是一本应用问题解决方案手册.
本手册针对龙芯3A、3B、3A2H、2HSOC、2GP1A及1B的常见问题进行解答.
Page3of38修订历史文档更新记录文档编号:文档名:龙芯处理器应用常见问题解答版本号1.
1创建人:芯片研发部创建日期:2015-02-05更新历史序号更新日期更新人更新内容0.
22013-10-08芯片研发部3号系列部分问题更新0.
32013-10-09芯片研发部增加3号系列问题32、33、340.
42013-10-23芯片研发部增加3号系列问题35、360.
52013-12-02芯片研发部调整文档结构,增加1个3号系列的崩溃问题,1个3号系列的优化问题0.
62013-12-16芯片研发部增加1个3号系列的优化问题0.
72014-01-01芯片研发部修正3号系列问题17的回答0.
82014-06-16芯片研发部增加1个3号系列的崩溃问题0.
92014-12-11芯片研发部增加2号系列问题;增加一个3号系列的死机问题;"龙芯3号应用常见问题解析"更名为"龙芯处理器应用常见问题解答"1.
02014-12-25芯片研发部增加1号系列问题Page4of381.
12015-2-5芯片研发部增加2GP1A相关问题Page5of38目录龙芯常用文档资料下载9龙芯1号系列.
101.
系统设置常见问题及解答.
10(1)1BNAND作为外部总线时传输异常10龙芯2号系列.
112.
系统设置常见问题及解答.
11(1)2H3PCIe检测不到设备11(2)3A2H中PCIe设备不能正常工作11(3)集成网卡网络传输停止11(4)3A2H集成网卡wget下载死机12(5)SATA光驱问题.
12(6)显示输出异常.
13(7)3A2H(2H3)板卡上PCIe只能使用port0端口.
13(8)3A2H通过HT发送中断工作异常.
13(9)2H3HDAudio控制器相对2H2做了哪些改动.
14(10)2H3HDAudio控制器相对标准有哪些兼容性问题.
14(11)2GP1A的GAMC设备定义配置有哪些特别的需要14(12)2GP1A的gmac设备定义配置有哪些特别的需要15(13)2GP1A中,为什么USB键盘在ramdisk下无法使用15(14)为什么2GP读取1A端寄存器速度很慢15(15)2GP1A的pmon下ohci为何要将LPC寄存器0的第30位置115(16)为什么2GP1A的内核要先将LPC寄存器的第30位清0,再置115(17)为什么2GP1Apmon下访存I2C寄存器时,需要将寄存器的偏移值左移2位.
.
.
16(18)为什么2GP1A的内核在对1A上串口设备进行定义时,regshift要赋值为2.
.
.
.
.
16(19)2GP1A内核对1A串口设备定义,uartclk的赋值应该是什么16(20)为什么在2GP1A的nand驱动中,要先配置GPIO_MUX_CTRL0寄存器16(21)为什么2GP1A的PMON代码中需要添加复位操作16(22)为什么2GP1A的内存频率不能太低17Page6of38(23)2GP1A中为什么配置DC控制器的时候还要配置GPU的寄存器17(24)2GP1A中为什么DC的时钟频率计算公式中N要大于等于217(25)为什么2GP1A0.
1版开发板只能使用外侧内存条17龙芯3号系列.
181.
系统设置常见问题及解答.
18(1)软件是否有办法区分3A3与3A5处理器18(2)龙芯3A处理器,HT频率最高设置为多少18(3)龙芯3B处理器,HT频率最高设置为多少18(4)龙芯3A处理器,DDR频率应该设置为多少19(5)龙芯3B处理器,DDR频率应该设置为多少192.
系统崩溃常见问题及解答.
20(6)龙芯3A处理器偶尔卡死在BIOS中的HT访问上,如何处理20(7)龙芯3A双路系统偶尔在内核中卡死,原因是什么20(8)龙芯3B处理器反复重启,偶尔出现BIOS无法启动,如何处理20(9)龙芯3B处理器反复重启,偶尔死在内核内存空间初始化,如何处理21(10)反复重启内核,偶尔发生kernelpanic的情况,如何处理21(11)龙芯3A处理器使用系统休眠功能时,偶尔发生唤醒失败,如何处理21(12)使用780E桥片x11perf测试死机,如何处理22(13)发现内核有时卡死在Spinlock等抢锁函数里,如何处理22(14)使用Intel82574网卡偶尔发生网络不通的情况,如何处理23(15)LTP测试发现失败项,原因是什么23(16)多屏切换时屏幕花屏,原因是什么24(17)GCC使用-MIPS64选项编译出错,原因是什么24(18)内核串口打印中出现SpuriousInterrupt是为什么25(19)操作系统设置为4K页或8K页,有时发现内存数据异常,如何处理26(20)为什么有时对PCI空间的显卡显存使用memcpy调用时会发生死机26(21)为什么会发现HT中断向量中存在一些没有配置的中断状态有效26(22)为什么龙芯3B05芯片有时在唤醒处理器核时会出现死机情况273.
系统优化常见问题及解答.
28(23)操作系统字符控制台下显示速度慢,如何处理28(24)内核运行时,处理器空闲功耗高于处理器忙时功耗,原因是什么29Page7of38(25)如何关掉其他核,只保留某些核运行以降低功耗29(26)HD系列显卡使用不了,如何处理30(27)为何要在内核中使用SWIOTLB,如何提高IO性能30(28)网络性能偏低,如何处理31(29)3A双路中断负载均衡后,网络的性能反而降低,原因是什么32(30)3Dglx测试分值低,如何处理32(31)为什么双路系统Unixbench测试中的syscall分值明显低于单路系统32(32)JAVA虚拟机只能使用1GB左右的内存,如何处理33(33)某些应用双路系统比单路性能低,原因是什么34(34)高清媒体播放性能较差,原因是什么35(35)如何在龙芯3系列处理器上通过编译器获得更高的性能35(36)龙芯平台浏览器为什么特别慢,是否有优化的版本36(37)龙芯平台支持Adobe的flashplayer插件吗性能如何36(38)龙芯平台对HTML5的支持情况如何37(39)为什么有时x11perf测试结果会特别得高37(40)在龙芯平台上,如何获得良好的WebGL用户体验37(41)龙芯处理器的功耗控制手段有哪些38Page8of38龙芯常用文档资料下载一、源码下载网址:http://www.
loongnix.
org/dev/gitweb/二、资料获取方法龙芯各类用户手册、数据手册等文档,请登录龙芯官网:http://www.
loongson.
cn/cpu.
php龙芯开源百科:http://www.
loongnix.
org/dev/wiki三、产品信息反馈如对产品手册有建议,欢迎将问题提交到:service@loongson.
cnPage9of38龙芯1号系列1.
系统设置常见问题及解答(1)1BNAND作为外部总线时传输异常现象某些长度的数据DMA读写在最后的几个字出错原因1B的DMA数据总线为16字节宽,如果一次传输不足16字节,将拆分成几次4字节访问.
这在16位DDR模式的时候会引发地址计算错误,导致相应的内存读写地址增量不是4,而是16+4.
如DMA写0x100.
.
0x10b12字节,则实际写的是0x100,0x114,0x1284个字.
DMA读时出错模式与写相同.
解决方法在编写驱动时注意以下几点:1.
将DMA传输缓冲区地址作16字节对齐;2.
申请的DMA缓冲区长度比实际需要的长度加64字节;3.
如果传输性能足够,则只使用16字节整倍数的传输和多次4字节的传输;4.
如果希望提高性能,则软件在准备或者处理内存中DMA缓冲区时按硬件出错的模式组织最后的几个字.
Page10of38龙芯2号系列2.
系统设置常见问题及解答(1)2H3PCIe检测不到设备现象检测不到设备,无法建立链路.
原因2H3集成的PCIePHY需要软件初始化一个寄存器后才能正常检测挂在tx信号上的设备.
解决方法在pmon中对PCIePHY寄存器进行配置.
对于3A2H的板卡,由于3A端不能直接访问PCIePHY的寄存器,需要在2H端的小BIOS中进行配置.
(2)3A2H中PCIe设备不能正常工作现象设备可识别,但驱动加载后工作异常.
原因硬件逻辑问题,PCIe控制器要求到HT的地址必须是16字节对齐.
解决方法对于PCIe设备的DMA传输,强制使用SWIOTLB进行一次拷贝.
(3)集成网卡网络传输停止现象用scp拷贝进行测试,执行一段时间后就会停止Page11of38原因传输DMA停止是因为该描述符的owner位没有置1(被HOST占用).
软件将该为置1,通知DMA可以传输这个描述符后,DMA可以恢复正常.
这个描述符被清零可能是驱动回收描述符所致.
解决方法将软件回收描述符的位置和DMA进行传输的位置保持一个描述符的间距.
(4)3A2H集成网卡wget下载死机现象测试中发现使用wget下载时会出现死机现象.
原因集成网卡不支持多个CPU核同时访问寄存器,可能出现总线卡死解决方法通过对访问寄存器部分添加自旋锁.
(5)SATA光驱问题现象插上光驱,每当系统启动到udev时,系统就会出现kernelpanic的现象.
具体引起kernelpanic的原因有一定随机性.
原因SATA光驱的某些ATAPI控制命令传输的数据长度不是4字节的整倍数,会让SATA控制器发出异常的访存,把内存写乱.
已知的命令包括0x51,0x12,0x5a,0xad.
解决方法在填充DMA数据长度的地方强制将不对齐的数据抹去.
具体参见drivers/ata/libahci.
c:ahci_fill_sg()函数.
Page12of38(6)显示输出异常现象显示器有时候会显示混乱,或者变黑原因在内存压力比较重的情况下,显示器访存速度跟不上,会导致内存FIFO下溢,影响正常显示.
解决方法解决这个问题的方法有两部分:1.
在中断处理函数里面对VGA或DVI通路进行复位;2.
只用一路数据输出,DVI端口输出拷贝VGA端口的数据.
如果确有需要两个显示端口输出不同的图像,则可以考虑:1.
适当降低输出分辨率;2.
降低显示色深(7)3A2H(2H3)板卡上PCIe只能使用port0端口现象3A2H(2H3)只能使用0号端口上的pcie设备.
原因2H3中PCIe的地址转换机制有所更改.
解决方法识别不同芯片版本,2H3不需要做pcie的地址转换.
(8)3A2H通过HT发送中断工作异常现象2H发送HT异常中断,在中断触发频繁的时候会出现一些读写硬盘的错误,或者网络异常的错误.
原因HT控制器逻辑有bug,发送中断会影响其它数据传输Page13of38解决方法不要通过HT发送中断,使用硬件的中断线.
(9)2H3HDAudio控制器相对2H2做了哪些改动2H3的HDAudio控制器修正了以下问题:1.
CORBWP/RIRBWP的标准兼容性,2H2中指针指向的为下一个待写入项2.
实现INTSTS,2H2中未实现3.
修正写1清零的寄存器实现,2H2中为写1取反4.
修正非32位对齐的8/16位寄存器写,2H2实现有误,需要一个特殊的软件规避方法(10)2H3HDAudio控制器相对标准有哪些兼容性问题1.
写入CBL寄存器的值应比实际缓冲区长度小1个单位,即输出流减64字节,输入流减16字节;2.
流复位机制有问题,LPIB寄存器无法通过流复位清零,软件在初始化一个流时需读出其初值,并且在后续运算中减去.
(11)2GP1A的GAMC设备定义配置有哪些特别的需要platform设备定义里的pbl设置为4,如果像2H一样设置为32,在1000M带宽下跑netperf容易引起死机;enh_desc设置为0,即硬件不支持增强型描述符,若设置为1,会有ping不通现象;phy_addr设置为16.
最多支持32个phy设备,但是2GP的gmac只用第16的phy设备.
设置为其它值,会造成网卡初始化找不到phy设备,初始化不能正常完成.
其它需要软件配合之处列举如下:(1)不要发起Txfifo操作(stmmac手册P267dmacsr6第20位);(2)不要打开硬件校验功能,其中对于接收而言,将mac寄存器0的ipc位置0(stmmac手册P280),对于发送而言,发送描述符1的CIC位置0(stmmac手册P350);Page14of38(3)dev->features中无硬件校验特征,否则会有能ping通,但是网络无法传输文件的情况;(4)tx_coe赋值为NO_HW_CSUM,无硬件校验.
(12)2GP1A的gmac设备定义配置有哪些特别的需要phy_addr只用1,而不是2GP的phy16,其它相同.
(13)2GP1A中,为什么USB键盘在ramdisk下无法使用答:因为USB键盘要在文件系统下测试,ramdisk下没有udev,因此无法使用.
(14)为什么2GP读取1A端寄存器速度很慢答:因为当1A端没有Pmon时,上电后总在执行uncache空间访存,造成2GP读取1A寄存器的速度很慢.
因此,需给1A加上pmon,在pmon中执行wait指令,使1A的处理器核停止执行任何指令.
(15)2GP1A的pmon下ohci为何要将LPC寄存器0的第30位置1答:若不置1,usb控制器处于复位状态,此时无法读取usb的寄存器.
(16)为什么2GP1A的内核要先将LPC寄存器的第30位清0,再置1答:pmon下初始化了OHCI控制器,到内核后如果只使用EHCI,则USB控制器的硬件状态会与软件理解的不一致.
即内核没初始化OHCI,但其实已经被PMON初始化了,导致EHCI工作不正常.
将USB软件复位后可以把OHCI控制器状态重置.
Page15of38(17)为什么2GP1Apmon下访存I2C寄存器时,需要将寄存器的偏移值左移2位答:对于按字节访问的操作,1A桥片硬件上会自动将寄存器的偏移值右移2位,为了能读取访问到这些寄存器,软件需先要把这些寄存器的偏移值左移2位.
(18)为什么2GP1A的内核在对1A上串口设备进行定义时,regshift要赋值为2答:解释同问题7.
如不照此操作,会读取不到寄存器的值,无法根据该值完成串口的配置、枚举操作.
(19)2GP1A内核对1A串口设备定义,uartclk的赋值应该是什么答:应该是clock_a,在1A芯片手册UART章分频锁存器一节.
Clock_a为内存频率的一半,内存频率为倍频系数与外部内存晶振的乘积.
倍率系数在start.
s里进行配置,由1A手册中寄存器corepll_cfg[10:8]位配置,该寄存器地址为0x1fe78030.
(20)为什么在2GP1A的nand驱动中,要先配置GPIO_MUX_CTRL0寄存器答:1A的NAND引脚没有完全引出,需要配置复用.
在2GP1A板中,将GPIO_MUX_CTRL0寄存器(地址为0x1fd00420)的第29,28,26位置1可以完成NAND相关复用配置.
(21)为什么2GP1A的PMON代码中需要添加复位操作答:因为1A的pci复位需要比较长的时间,2GP的PCI控制器发出的复位信号不足以复位1A,造成1A侧控制器没有正常复位,通过开机时使用gpio模拟复位信号增加复位时间解决.
硬件上需要把2GP的pcireset信号断开,把2GPgpio0电阻接上当reset信号用Page16of38(22)为什么2GP1A的内存频率不能太低答:因为作为桥片1A内存的频率如果低于60MHZ,写数据会出现错误.
(23)2GP1A中为什么配置DC控制器的时候还要配置GPU的寄存器答:因为DC的显示数据经过GPU传递,所以1A的GPU需要设置成一个比像素时钟频率高的固定值,否则会造成显示抖动或不正常.
(24)2GP1A中为什么DC的时钟频率计算公式中N要大于等于2答:1A的DCPLL计算公式中n的取值必须大于等于2,否则在某些情况下会造成输出的显示HSYNC和VSYNC等时钟错误.
(25)为什么2GP1A0.
1版开发板只能使用外侧内存条答:因为1A侧的I2C串联了两个内存条和VGA接口,内侧内存条和VGA的I2C地址冲突,所以只能使用外侧内存条.
Page17of38龙芯3号系列1.
系统设置常见问题及解答(1)软件是否有办法区分3A3与3A5处理器封装上,可以通过标识来区分3A3与3A5处理器.
其中3A3处理器为LS3A1000C/LS3A1000D,3A5处理器为LS3A1000E.
软件上,可以通过HT控制器里的某些配置寄存器的初始值来进行区分.
例如,HT控制器上偏移为0x5C的配置寄存器,在3A3中初始值为0,而3A5中默认值为0x07778888.
因此,可以用这个寄存器的值是否为0来区分两个处理器版本.
(2)龙芯3A处理器,HT频率最高设置为多少龙芯3A处理器HT总线的最高工作频率为800MHz.
对于HT总线频率,在BIOS中使用软件进行配置,最高可以设置为800MHz.
对于HT控制器频率,由引脚直接配置.
3A5处理器(封装标识为LS3A1000E)建议设置为400MHz,而3A3处理器(封装标识为LS3A1000C/LS3A1000D)建议设置为200MHz.
(3)龙芯3B处理器,HT频率最高设置为多少龙芯3B处理器的HT总线最高工作频率为1.
6GHz,但是受不同使用场景的影响,实际工作频率有所不同.
使用HT总线连接AMDRS780E桥片时,最高工作频率可以设置为800MHz.
这是因为龙芯3B处理器HT总线不支持8b10b编码,而RS780E的HT接口频率高于1GHz时,必须使用8b10b编码.
使用HT总线进行双路片间互连时,最高工作频率可以设置为1.
6GHz.
两种总线频率都是在BIOS中使用软件进行配置.
对于HT控制器频率,可以由CLKSEL引脚直接配置,建议设置为800MHz.
Page18of38(4)龙芯3A处理器,DDR频率应该设置为多少龙芯3A处理器,对于DDR3-RDIMM来说,最高可以工作在400MHz.
对于DDR3-UDIMM来说,最高可以工作在300MHz.
(5)龙芯3B处理器,DDR频率应该设置为多少龙芯3B处理器的DDR工作频率与主板布局有一定的关系,当使用每个内存控制器双槽设计时,最高可以工作在533MHz.
当使用每个内存控制器单槽设计时,可以工作在600-667MHz.
最终工作的最高频率还与主板设计有关.
Page19of382.
系统崩溃常见问题及解答(6)龙芯3A处理器偶尔卡死在BIOS中的HT访问上,如何处理龙芯3A处理器主要有两个发布版本,其中3A3处理器(处理器封装标识为LS3A1000C/LS3A1000D)处理器HT接口存在链路初始化问题,可能会偶尔发生HT链路访问失败的情况.
建议更换为3A5处理器(处理器封装标识为LS3A1000E).
如果必须使用3A3处理器,则需要在主板上使用看门狗(处理器GPIO脚控制),在第一次HT访问之前,使能看门狗.
如果发生HT访问卡死情况,则自动重启系统.
对于BIOS中的DMATEST卡死,也是相同的原因,也需要使用看门狗重启.
(7)龙芯3A双路系统偶尔在内核中卡死,原因是什么龙芯3A处理器主要有两个发布版本,其中3A3处理器(处理器封装标识为LS3A1000C/LS3A1000D)对跨芯片CACHE一致性共享访问的支持有缺陷.
导致双路系统中,两片处理器之间发生频繁交叉共享访问的时候在很小的概率下会引起系统死锁.
因为仅涉及跨芯片访问,所以在3A单路系统中不会有此问题.
针于3A双路系统中的3A3处理器,建议更换为3A5处理器(处理器封装标识为LS3A1000E).
(8)龙芯3B处理器反复重启,偶尔出现BIOS无法启动,如何处理出现这种情况的时候,首先检查一下是否内存读写出错了.
然后需要比较无法启动时与正常启动时,两次LOG文件中内存控制器训练得到的参数有无不同.
如果发现两次LOG中参数不同,很有可能是因为内存训练程序没有更新所导致的问题.
内存在做Leveling的过程中,由于某些厂商内存颗粒的原因会产生一些随机的错误,导致训练结果出错.
这个问题已经通过修改内存训练程序修正.
所以如Page20of38果碰到这种问题,应该检查本地的BIOS内存训练与官方最新版本PMON中的内存训练程序有无差别.
(9)龙芯3B处理器反复重启,偶尔死在内核内存空间初始化,如何处理这个问题与第8个问题是一样的.
只是出现这种错误的内存控制器位置不同.
首先需要比较出错时BIOS启动LOG与正常启动LOG中的内存参数有无不同.
如果发现两次LOG中参数不同,那么就应该检查本地的BIOS内存训练与官方最新版本PMON中的内存训练程序有无差别.
(10)反复重启内核,偶尔发生kernelpanic的情况,如何处理内核启动过程中,偶尔发生kernelpanic,表现是死在内核里,但在整个Linux软件层,包含基础软件、系统软件、应用软件等都有可能触发错误,而刚好被内核捕捉到,触发了一个kernelpanic,进而导致整个系统死机.
以龙芯3B系列重启为例,3B双路反复重启死机有2个可能原因.
第一个是内存稳定性,各种应用必须在内存稳定的基础上展开才有意义.
第二个可能是由at-spi-registryd进程引起.
该进程在内核启动完毕进入系统软件启动时,会作为一个服务被注册,反复进行重启测试可能会触发其自身问题,该问题请参见gnome官方问题列表(https://bugzilla.
gnome.
org/show_bug.
cgiid=345428).
在gnome登录管理时,过快地输入root/password就有可能会触发这个问题.
该问题在redhat、ubuntu、debian、fedora等系统中均普遍存在.
目前暂时的解决方式是在OS里把该服务卸载,或者简单将at-spi-registryd进程更名,使其在系统软件启动时不再被调度.
(11)龙芯3A处理器使用系统休眠功能时,偶尔发生唤醒失败,如何处理发生这种情况时,首先应该在正常情况下,对内存稳定性进行测试,确定系统在没有休眠唤醒时候的稳定性.
在确保内存稳定的前提下,如果还有这种问题,那么应该检查处理器内存部分的上电时序是否正确.
Page21of38需要休眠唤醒功能(STR)的系统,需要对处理器内存部分的上电时序进行特别处理.
保证在核电压(VDD)上电之后再对内存电压(MEM_VDDE)进行上电.
对于正确的上电时序,内存条CKE信号应该在上电的过程中保持为低电平.
而错误的上电时序下,内存条CKE信号可能在上电的过程中会有变高(或者中间电平)的跳变.
(12)使用780E桥片x11perf测试死机,如何处理使用某些低版本的Xorg和libdrm包时,可能会在进行x11perf测试的时候发生死机情况.
这可能是由于这些版本对应的显示驱动存在问题而造成的,建议将Xorg包升级到版本1.
13以上,libdrm升级到2.
4.
39以上.
如果必须使用这些版本的Xorg和libdrm,可以采用下面的方法来避免死机问题.
导致死机的原因在于外设的显示驱动将对显存本身的访问采用DMA的方式发给了处理器,而此时如果处理器将这个访问重新发给显存,就会发生桥片死锁而导致处理器死机.
此时,只需要让处理器对这种显存地址进行特殊处理,给出随机数据返回即可避免.
换句话说,在配置一级交叉开关的时候,不要将对应的从DMA上来的显存空间再映射到HT上.
目前最新的官方PMON中已经默认进行了这种处理.
这种方法虽然可以避免系统死机,但是这些版本的3D显示性能十分低下.
建议将Xorg和libdrm包尽快升级.
(13)发现内核有时卡死在Spinlock等抢锁函数里,如何处理龙芯3A/3B处理器对LL指令的使用有严格的要求,如果使用时没有符合要求,就有可能导致出现对应数据出错的情况.
目前内核及C库中的LL指令已经按照处理器要求正确使用,但是可能部分用户程序中并没有对LL进行特别处理,需要用户手工对LL指令进行处理,或使用龙芯官方提供的GCC编译器对用户程序进行重新编译.
LL指令的使用要求如下:(1)所用执行的LL指令必须在前使用SYNC指令;(2)LL指令后SC指令前如果有跳转指令的,跳转目标必须是一条SYNC指令.
Page22of38其中,条件(1)可以使用龙芯官方GCC编译器自动处理,而条件(2)需要用户自行添加.
条件(1)下检验系统编译器是否可以正确处理的方式如下:(a)编写如下程序片段,并保存为名为a.
s的文件ll$0,0x0($0)(b)执行如下命令:asa.
s–oa.
outobjdump–da.
out(c)观察objdump输出,正常输出应该是:00000000:0:0000000fsync4:c0000000llzero,0(zero).
.
.
若在反汇编结果的LL指令前没有SYNC指令,则说明系统里的binutils版本太旧,请立即更新到龙芯官方的最新版本.
(14)使用Intel82574网卡偶尔发生网络不通的情况,如何处理Intel82574网卡在某些情况下会发生网络中断的情况(参考Intel官方网站文档:Intel82574FamilyGigabitEthernetControllerSpecificationUpdate),但是该问题只有在网络负载非常大,并且长时间运行的情况下发生.
一般而言,该问题对于台式机应用环境几乎没有影响.
该问题可以通过在内核中使用网络状态监测,在发生问题时重启网卡的办法来解决(具体补丁请咨询龙芯技术服务人员).
对于网络要求较高的服务器或是其它应用环境,建议选用BroadcomBCM5709C网卡.
该网卡芯片在龙芯平台上适配测试工作稳定.
(15)LTP测试发现失败项,原因是什么LTP测试是针对Linux内核的压力测试,涵盖面广,主要以系统调用为主.
LTP测试集会随着Linux内核版本的升级而有所调整,所以,高版本的LTP测试Page23of38集在低版本的Linux内核上运行时肯定会出现很多错误,甚至死机,而低版本的LTP也不能完全反应高版本Linux内核的健壮性.
一般情况下,针对一个架构,甚至一个架构下的某一款芯片,Linux内核会需要有专门的订制,而且在不同平台上Linux内核涵盖的内容也各不相同.
比如,龙芯3号系列内核被编译成64位的内核,而LTP测试集中有许多项是针对32位系统的测试,那么测试项返回值就不是其设定好的值,比如unsignedlong类型64位长度是8,而32为长度4.
对于这些测试项来说必定会失败.
而有些LTP测试项的失败也是一种正常返回值.
可以说LTP的失败项不会影响系统的稳定性、正确性,但是LTP测试如果有死机、大量Error等现象,就需要查看Linux内核或者系统软件,可能在哪里出现了错误.
以龙芯3ALTP测试死机问题为例,某些操作系统中LTP测试会有死机现象,究其原因,却是因为OS系统中关于终端tty的驱动处理有问题,引发地址错误,最后导致Linux内核死机.
像这类死机问题,普通测试程序很难发现,而LTP压力测试力度却可以抓到问题,所以LTP测试还是内核测试一个较好的测试集.
(16)多屏切换时屏幕花屏,原因是什么出现该问题的原因是在显存内容还没有初始化的情况下,打开了显示器输出.
即便是在上述情况下,因为显示器输出打开后会立即进行显存初始化工作,所以花屏的时间非常短暂,不会对正常使用造成任何影响.
此外,在更新的系统软件和固件版本下,我们已经修正了该问题,即先初始化显存,然后打开显示器输出,这样就不会出现短暂的花屏现象.
可以咨询相关龙芯技术服务人员更新软件解决.
(17)GCC使用-MIPS64选项编译出错,原因是什么龙芯3A/3B处理器使用GS464系列处理器核,支持MIPS64指令集,但在桌面应用最为常见的O32ABI下,只能使用16个偶数号浮点寄存器.
若使用了奇数号浮点寄存器,则会产生计算结果错误.
Page24of38GCC工具链默认的-mips64选项会对奇数号寄存器进行分配,因此,为了适配龙芯3A/3BO32下编译程序时,必须使用修改寄存器分配后的工具链才能编译出正确的程序.
因此,请使用龙芯官方提供的最新版GCC工具链.
(18)内核串口打印中出现SpuriousInterrupt是为什么内核串口打印出现SpuriousInterrupt很可能是因为核间中断的中断响应问题而产生的.
龙芯3A/3B处理器使用内部的核间中断控制器来产生核间中断,中断响应时需要对这个中断控制器进行操作.
一个中断处理首先会关中断,接着清除其中断控制器上的对应中断向量,然后进行所需要的处理,处理完成之后开中断并返回被中断的进程继续执行.
但由于处理器的执行较快,在中断返回的时候很可能清中断还没有在中断控制器上生效.
由此使得处理器再次进入中断,而在处理器开始处理这个中断的时候,上一次清中断的效果显现,将这个中断清除.
此时处理器再去查找中断源的时候就会失败,导致出现SpuriousInterrupt.
解决这个问题的办法是在清中断的写操作后增加一个读中断向量的操作,确保清中断操作实际完成.
该补丁已在龙芯官方内核中集成,如果碰到该问题,应该确认本地内核版本.
龙芯官方内核在下面版本之后都默认支持了这一特性.
authorMengxiaofuMon,26Nov201207:05:23+0000(15:05+0800)committerwanghongmeiMon,26Nov201210:08:31+0000(18:08+0800)commite5903bd828607eee6113ce99b70fea25267d46d2Page25of38(19)操作系统设置为4K页或8K页,有时发现内存数据异常,如何处理龙芯3A、3B处理器默认使用16K页.
有些操作系统希望以4KB或者8KB为单位进行内存管理,此时内存映射必须遵守以下规则,否则就可能会产生数据被异常修改的现象.
这个规则是逻辑地址(虚拟地址)的[13:12]位必须与物理地址的[13:12]位保持一致.
以4K页系统为例,虽然系统内存以4KB为单位,但是,进行地址映射的时候并不能将任意逻辑页与任意物理页相关联,而是必须保持被某个逻辑页关联的物理页基地址[13:12]位与逻辑页的基地址[13:12]位相同.
对于在Linux与VxWorks系统中使用4K页,龙芯官方已经有比较成熟的解决方案.
如果遇到这种问题,可以咨询相关龙芯技术服务人员协助解决问题.
(20)为什么有时对PCI空间的显卡显存使用memcpy调用时会发生死机Memcpy系统调用中,会检查源地址及目的地址的地址对齐情况,对于对齐访问,会采用LW、LD、SW、LD这几条指令实现;而对于非对齐访问,会采用LWR、LWL、LDR、LDL、SWR、SWL、SDR、SDL这几条指令来实现.
但是对于PCI空间,这些非对齐访存指令可能会向PCI设备发出一些无法正确处理的读写格式,导致PCI设备出错,最终导致系统死机.
简而言之,对于PCI控制器空间,不应该使用非对齐访存指令.
而对于内存空间或者是HT控制器空间,使用非对齐访存指令都是安全的.
如果需要使用memcpy实现显存拷贝,应该考虑使用LB、LH、LW等指令来实现非对齐时的对应功能.
(21)为什么会发现HT中断向量中存在一些没有配置的中断状态有效发生这种情况的一种可能是系统的内存地址空间使用存在问题.
在AMD桥片中,地址空间0xFExx_xxxx有一部分是用作中断路由使用的.
如果在操作系统Page26of38中添加内存空间时,把这一部分的地址也作为内存空间使用的话,就有可能在当DMA请求发生在这一部分内存空间时,导致这些请求被当成中断发送,而在HT控制器中的中断状态寄存器中出现一种未知的中断向量.
当这一情况发生的时候,也同时意味着系统中有一些正常的DMA请求的丢失,可能会引起某些外设工作不正常.
因此,在系统中添加内存空间时,对于0xFE00_0000–0xFFFF_FFFF这一地址空间要保留,不能添加到系统内存空间中.
这样就可以避免这种问题的发生.
(22)为什么龙芯3B05芯片有时在唤醒处理器核时会出现死机情况对于3B05芯片,处理器核的关闭与唤醒存在死机的风险,因此不可以对处理器核进行时钟关闭功能.
而对于3B06及以后的芯片,已经修复了该问题,所以在BIOS启动过程中,关闭了无关处理器核以加快BIOS启动,后期再重新打开.
如果在内核启动的过程中发现在唤醒从核时死机,可以检查在BIOS启动过程中是否有无关闭其它处理器核.
Page27of383.
系统优化常见问题及解答(23)操作系统字符控制台下显示速度慢,如何处理通常情况下,系统里面的设备都是采用DMA方式与处理器进行交互.
但是控制台在显卡的framebuffer模式下,是由处理器对显存进行直接的写操作来完成显示过程.
因为处理器对IO的操作都是Uncache的串行操作,所以读写操作速度很慢.
在控制台的显示中就表现为刷屏操作缓慢.
解决这个问题,有两个办法.
第一种方法对应于3A5或3B处理器.
可以把HT的POST窗口对应设置为显存的地址空间.
这样,处理器对显存的Uncache写操作就会被作为POSTWRITE发出,不需要等待写响应.
由此加速处理器的显存写操作.
这里需要注意两点:(1)对于3A3处理器,不支持POST窗口的设置.
如果在3A3处理器上设置了POST窗口,可能会引起死机;(2)POST窗口必须限定在显存范围之内,因为一旦对其它设备空间进行了POSTWRITE操作,很可能因为读写序的错误而发生问题.
最可能出错的就是USB驱动,所以如果发现USB驱动工作不太正常的话,首先可以检查POST窗口是否正确配置.
第二种方法对应于各种版本处理器.
将显存空间映射到处理器的UncacheAccelerate空间.
这样,对于显存空间的写操作会在处理器内收集满一个CacheLine一起发出,大大加速显存的写操作.
对于这种设置,还必须将HT的Dword_write(配置寄存器偏移0x50)的配置设为0,否则可能会导致控制台下出现偶尔的花屏.
这里需要注意的是,Dword_write的设置必须在内核完成所有驱动的初始化之后.
否则可能会导致某些设备的初始化错误.
当然,真正能大幅提高显示速度的方法还是采用显卡的DMA方式.
内核和用户程序将数据填入内存的数据区域,再由显卡将这部分数据通过DMA的方式放入显存.
Page28of38(24)内核运行时,处理器空闲功耗高于处理器忙时功耗,原因是什么Linux内核中,当处理器空闲时,事实上一直在调用IDLE进程,等待并试图重新调度进程.
而在龙芯3A/3B处理器中,没有实现wait指令的对应功能,导致处理器空闲时,实际上处于一个"忙等待"状态.
此时指令循环较小,Cache命中率高,流水线运行紧凑,使得功耗升高.
而相比处理器忙时运行的程序,一般来说达不到IDLE进程的Cache命中率和IPC水平.
因此看起来,处理器空闲时功耗会高于处理器忙时功耗.
为解决这个问题,在内核中增加了处理器IDLE补丁,使得处理器空闲时,以Uncache方式运行IDLE程序,大幅减小空闲功耗.
另一方面,也可以采用动态变频及动态开关核的方法来降低在处理器低负载情况下的功耗.
这些方法都已经有成熟的解决方案.
(25)如何关掉其他核,只保留某些核运行以降低功耗龙芯3A/3B处理器具有单独关闭某个指定处理器核的功能,在不同的阶段进行关核处理有不同的系统要求.
如果系统仅需要使用某几个处理器核(静态关闭时),只需要在BIOS启动初期(未使用Cache之前),将对应的处理器核使能信号设置为无效即可.
龙芯3A处理器中对应的控制寄存器偏移在0xBFE00180,龙芯3B处理器中对应的控制寄存器偏移在0xBFE001D0.
如果系统需要在内核中实现动态开关某些处理器核,那么在关核之前还需要将被关闭处理器核中的Cache数据刷回最后一级Cache.
对于龙芯3A处理器来说,一个处理器核需要被关闭的时候,可以主动跳到Uncache空间,执行一段Uncache的刷ICache/DCache操作.
这段刷Cache操作完成之后,再主动向处理器核使能寄存器发出关闭写操作即可完成整个关核动作.
对于龙芯3B处理器来说,这个过程大致相同,但是需要注意的是,3B处理器不支持私有VCache的刷Cache操作(VCache为龙芯3B中引入的处理器核私有二级Cache层次,与ICache及DCache为非包含关系).
所以在需要关核的时Page29of38候,必须由这个被关的处理器核向系统中所有的SCache进行刷Cache操作来保证数据的完整性.
因此,在龙芯3B处理器上,不建议进行动态的关闭处理器核操作.
如果有需要的话,可以考虑单独调低某些处理器核的时钟频率(Freqctrl,寄存器地址为0xBFE001D0).
此时,需要做的操作远比关核要简单得多,只需要在相应的软件处理之后,把对应的Freqctrl寄存器设置为0即可,不再需要刷Cache操作.
(26)HD系列显卡使用不了,如何处理目前龙芯3号系列,已经支持HD部分系列的外接显卡,如4系列、5系列、6系列等,所支持的显卡类型受Linux内核官方对独立显卡驱动支持的制约.
每个系列都会有不同的小版本,每款显卡都自带一个firmware文件,该文件需要内核开发人员在该独立显卡官网下载对应的Linuxfirmware,复制到Linux内核中firmware/radeon/目录下,并添加其在编译时的支持.
例如,JUNIPER显卡对应3个firaware:JUNIPER_pfp,JUNIPER_me,JUNiPER_rcl等.
在使用JUNIPER这款显卡时,就需要把这三项全部复制到firmware/radeon/目录下,同时添加这3个firmware的编译支持.
了解该问题可以为进行HD显卡驱动开发、基础软件开发的开发人员提供借鉴,也可以帮助用户了解原理,有问题时方便定位问题.
(27)为何要在内核中使用SWIOTLB,如何提高IO性能SWIOTLB是内核中的一个软件DMA的办法.
传统的IO设备只支持32位的地址空间,而目前的大部分机器内存地址都已经超过32位地址空间的寻址范围.
因此,在内核里面专门划分了ZONE_DMA来限定IO设备能够进行DMA访问的空间.
但是,这种划分是非强制性的,而且很多驱动对其支持并不完美.
SWIOTLB可以使64位系统中只有32位DMA寻址的设备在CPU二次搬运的帮助下实现"间接访问"64位物理地址空间.
具体的过程是,内核预先在ZONE_DMA32中保留一段内存,当只有32位DMA寻址能力的设备需要DMA访问高于32位的地址空间时,设备先将数据搬运到内核这段保留的地址空间中,然后再由CPU通过memcpy将数据从保留的地址空间拷贝到目的地址,从而让该设备获得间接访问高地址的能力.
Page30of38SWIOTLB机制有效解决了DMA空间的访问问题,但因为二次拷贝带来的系统开销会导致IO性能的下降.
对于双路系统来说,这个问题表现得更加明显.
而在使用SWIOTLB之外,有些现代IO设备已经具备支持64位寻址能力,对这部分IO设备,可以打开其64位DMA访问.
当内核给这部分设备分配DMA空间的时候,就无需再使用SWIOTLB进行处理,大大提高了IODMA性能.
在当前系统中,具备64位寻址能力的设备与仅能进行32位寻址的设备并存.
因此,在使用64位DMA的同时也需要打开SWIOTLB机制,由软件根据设备特性决定是否需要使用SWIOTLB.
在最新的官方PMON与内核中,都已经对SWIOTLB与64位DMA进行了支持.
如果遇到IO性能低下的情况,可以先对64位DMA是否打开进行排查.
(28)网络性能偏低,如何处理龙芯3系列中断是经由HT中断控制器送到处理器核的,在这个过程中,针对网络性能,有两方面主要影响,一方面,网卡DMA速度,网卡在64位DMA下比在32位DMA下性能有很明显的提升.
另一方面,当前龙芯3系列的中断处理集中在0号核,网卡中断密集度较高,所有中断都在0号核,会造成阻塞.
网卡性能提升的一个重要方面就是中断负载平衡,其原理就是借助处理器的核间中断,把网卡中断路由到4个不同的核上,由4个处理器核并行处理网卡的中断,经实际验证,网卡的性能与之前有大幅提升.
龙芯官方内核在下面版本之后都默认支持了这一特性.
authorSiZhiyingWed,24Jul201306:29:48+0000(14:29+0800)committerwanghongmeiThu,22Aug201304:52:11+0000(12:52+0800)commit0982db27ffccab35ace836ce9f73b2fa1338c661Page31of38(29)3A双路中断负载均衡后,网络的性能反而降低,原因是什么这种情况很可能是没有使能64位DMA访问,导致虽然中断被多个处理器核平摊,但是由于使用了SWIOTLB进行二次拷贝,DMA性能成为瓶颈,而中断的加入反而打断了拷贝,使得最终性能反而降低.
所以,遇到这个情况的时候应该首先检查BIOS及内核的64位DMA使能是否开启.
(30)3Dglx测试分值低,如何处理3Dglx齿轮测试程序主要用于测试当前系统是否有3D硬件加速功能,是否开启此功能以及该功能的性能如何.
开源3D的支持在Linux内核、xorg及drm驱动中.
龙芯3号系统使用的AMDRS780e桥片也是支持3D功能的.
如果当前系统glx的分数只有50fps,那么很可能是因为GPU的3D加速功能没有开启,此时需要检查mesa、drm等驱动的版本.
比如将drm升级到7.
1的版本.
正常情况下glx齿轮程序的分值能达到400fps以上.
(31)为什么双路系统Unixbench测试中的syscall分值明显低于单路系统在Unixbench测试中,这一测试用例的主要操作是多个处理器核反复的对同一个变量进行原子操作.
该操作会涉及多个处理器核的密集共享与互斥访问.
对于龙芯处理器,这种共享互斥访问采用LL/SC指令实现.
而密集的跨片LL/SC访问会使得每个处理器SC成功的概率严重下降,最终表现为该项测试的分值比单路系统低数十倍.
对于这种情况,在内核中增加了层次锁处理,能够有效降低这种密集跨片LL/SC访问,提高SC指令的成功率,最终提升UnixBench性能.
如果用户的双路系统测试分值低于单路系统,那么应该检查内核版本是否最新,是否采用了层次锁.
龙芯官方内核在下面版本之后都默认支持了这一特性.
Page32of38authorMengxiaofuTue,3Sep201308:06:55+0000(16:06+0800)committerwanghongmeiWed,11Sep201302:32:29+0000(10:32+0800)commitfd42a292bafd99be320695505abbd9a50d2fb1fc(32)JAVA虚拟机只能使用1GB左右的内存,如何处理目前龙芯官方已经正式发布64位JAVA虚拟机版本,完全没有内存使用限制.
如果遇到这一问题,很可能是还在使用32位JAVA虚拟机版本,请用户更新最新版的64位JAVA虚拟机.
如果必须使用32位版本,可以采用以下方法扩大可使用内存的大小.
该问题的具体表现是:在龙芯MIPS32位桌面操作系统中,应用程序的可分配内存空间只有1.
3G.
该问题导致32位应用程序只能有1G多一点的虚拟内存空间,对于Java虚拟机、数据库等大型程序造成了性能瓶颈,随机出现"内存溢出"错误.
从硬件角度来看,MIPS32位体系结构最大应该能够支持2G虚拟机内存.
追踪内核对于32位应用程序的加载过程,发现操作系统会在宏TASK_UNMAPPED_BASE定义位置开始加载/lib/ld-2.
12.
so.
而宏TASK_UNMAPPED_BASE的默认值是TASK_SIZE/3,TASK_SIZE即虚拟空间的最大值2G.
这导致:低端有600M的"空洞"无法利用,而高端最多只剩下1.
3G的连续内存空间.
由此可以通过将TASK_UNMAPPED_BASE的默认值改小的方法来略微扩大用户空间.
将TASK_UNMAPPED_BASE的默认值改为TASK_SIZE/6,使/lib/ld-2.
12.
so的加载位置提前到低300M,从而在高端新增加300M的连续可分配空间.
目前这个修改已经在龙芯内核中集成,用户使用中标操作系统(64位build16)以后版本,均可以分配1.
6G左右的内存.
Page33of38当然,这种方法只能缓解这一问题.
目前龙芯64位JDK产品已经正式取代原有的32位JDK.
64位JDK支持8G以上的内存空间,在功能上完全向下兼容,因此建议用户应用系统升级为64位JDK,从根本上解决内存问题.
从2013年6月至今已经有大量客户应用系统升级到64位JDK,先后通过了"7天x24小时"压力测试,稳定性有充分保障.
下图是某客户应用系统使用32位JDK和64位JDK的效果对比,可以看出64位JDK提升了充裕的内存资源,完全消除了内存溢出问题.
(33)某些应用双路系统比单路性能低,原因是什么双路系统相比单路系统来说,处理器核数增加一倍,内存容量也能增加一倍.
但是,如果一个处理器核需要访问远程内存的时候,就会因为跨芯片而增加很大Page34of38的延迟.
对于在NUMA上运行的系统来说,保持进程运行时的内存亲和性非常的重要,这点在内核里已经加入了专门的支持.
但是,对于某些应用程序来说,可能没有考虑到NUMA系统环境的特殊性.
对于些类程序,如果不能考虑内存的分布特性而加以利用,可能会导致系统性能的降低.
所以,对于这一类的程序优化,应该考虑加入NUMA的特性支持,对不同线程的内存进行单独的分配.
例如,龙芯官方JAVA虚拟机在支持了NUMA特性之后,使得双路系统上运行SPECJVM的性能比单路系统提高了50%左右.
另外,对于IO性能来说,大部分情况下双路系统会比单路性能略低.
因为双路系统中,并没有增加额外的IO资源,而且IO设备全部与其中一个处理器连接而远离另一个处理器.
如果DMA操作需要跨芯片访问的话,对于支持64位DMA访问的设备来说,DMA访问可以直接发送到远离的处理器上,不会带来太大的性能损失,只会因为延迟的增加而导致轻微的性能下降.
而对于只支持32位DMA访问的设备来说,因为还涉及到处理器的二次跨片拷贝,会带来较大的性能下降.
所以,对于这一类优化,应该考虑使驱动进程尽量运行在靠近IO的处理器上,而DMA内存空间也应该尽量分配在靠近IO的处理器上.
(34)高清媒体播放性能较差,原因是什么当前龙芯3A/3B系统使用的AMD780E桥片,并没有提供开放的高清媒体硬解码驱动.
也就是说,在操作系统中,并不支持高清媒体的硬解码.
所有的媒体解码工作都由处理器进行软解工作,所以对于一些高码流媒体播放,可能会出现播放不流畅或丢帧的现象.
对此,有两种解决方案.
一是采用龙芯官方提供的并行解码库进行媒体播放.
该解码库同时还使用龙芯多媒体扩展指令进行了优化,可以实现大部分720P视频的播放.
二是采用AMDRadeon4000及以后的新款显卡,配合其在新版内核中提供的UVD驱动,可以实现高清媒体的硬解码.
(35)如何在龙芯3系列处理器上通过编译器获得更高的性能目前GCC默认采用mips3指令集,而采用-mips64指令集选项,可以避免每条访存指令后的nop指令,同时可以使用64位访存指令和避免流水线停顿的三Page35of38操作数乘法.
因此,通过添加-mips64的编译选项可以获得稳妥而显著的性能提升.
目前发布系统/opt目录下的工具链,提供了针对龙芯3系列处理器硬件特征进行优化的(a)三操作数除法、取模指令;(b)128位访存指令自动向量化选项.
可以通过-march=loongson3a开启(a)优化,通过-march=loongson3a–ftree-vectorize–O3开启(a)、(b)优化.
如果程序属于浮点访存/计算密集型程序,不妨打开上述选项进行编译.
这类选项对科学计算的Fortran程序效果尤为明显.
(36)龙芯平台浏览器为什么特别慢,是否有优化的版本龙芯平台Linux上主要运行的浏览器有Firefox和Chrome.
浏览器慢和多种因素相关,其中JavaScript解析是影响性能很重要的一个方面.
目前JavaScript主要的评测工具有Sunspider和GoogleV8.
龙芯Linux发行版上使用的Firefox浏览器是3.
6.
9和4.
0x,其在3A780E开发板(处理器频率900MHz,内存频率300MHz)上的Sunspider大约在20000ms以上,龙芯对其进行了优化,目前优化过JS引擎的Firefox4.
0上Sunspider得分是3300ms左右,该版本已经在最新的中标麒麟系统和龙芯移植的Fedora系统上进行了集成.
2013年以来已完成了Firefox17esr的移植,其Sunspider分值可达到2300ms左右,在图形渲染的性能也有提高,用户可以在Fedora13和中标麒麟桌面版6.
0上试用.
体验版可从http://www.
loongson.
cn/dev/ftp/firefox/firefoxesr1705install.
tar.
gz下载.
龙芯平台Chrome目前支持版本是Chrome28,Sunnspider得分为3000ms左右,GoogleV8得分在900左右.
(37)龙芯平台支持Adobe的flashplayer插件吗性能如何龙芯自2010年底以来致力于将Adobe的flashplayer插件移植到龙芯上,经过和Adobe指定服务商TPI的共同努力,目前flashplayer11.
1r102可以在龙芯的O32Linux系统下稳定运行,通过了Adobe的官方测试集DCTS的全部功能测试,支持全部的开发API.
实测性能和浏览器的版本及硬件平台有关,在3A780EPage36of38开发板(处理器频率900MHz,内存频率300MHz),Firefox4.
0下可满足12fps的flash影片的播放需要.
对于在线视频,如youku、51web等网站的标清视频,可流畅播放.
对于高清视频,性能还不能满足要求,建议使用Firefox17或更高版本的浏览器进行播放,可改善对在线视频的播放体验,也可选用Chrome来运行.
在3B平台上的体验会更流畅.
(38)龙芯平台对HTML5的支持情况如何HTML5标准的支持是浏览器的一项重要工作,Firefox和Chrome都支持HTML5标准,其性能评价可以通过测试网站(http://html5test.
com/)进行测试.
目前3A780E开发板(处理器频率900MHz,内存频率300MHz)上Chrome28得分约为410,Firefox17得分约为370左右,龙芯上对HTML5标准支持的情况和其他平台相同,支持HTML5的Web应用(如客户端数据库IndexDB和触控(Touch)事件等)、图形和内嵌内容(如画布、视频、音频、SVG、WebGL等对象)、音频编码、视频编码、表单对象、表格属性.
总体来说Chrome支持HTML5的程度比Firefox多些.
(39)为什么有时x11perf测试结果会特别得高X11perf测试系统的显示性能,包括了GPU加速性能.
在测试时,必须保证测试的图形框一直在可显示区域,系统不能进入黑屏或屏保等状态.
因为一旦测试的图形框不再显示,则意味着测试程序不会带来实际操作,系统对无需显示的部分会自动进行优化,对显示命令直接返回.
因此,就会在这种情况下出现x11perf测试分值特别高的异常结果.
在测试x11perf时,需要禁止屏保以获得系统的真实显示性能分值.
(40)在龙芯平台上,如何获得良好的WebGL用户体验WebGL是在浏览器中实现3D渲染效果的一项技术.
为了获得良好的用户体验,需要硬件、Linux内核、底层库和浏览器配合,达到最优的组合.
如果上述环节中,一个或者任意部分有问题,在浏览器中3D渲染效果就可能会非常不理想,出现卡、顿,甚至无法正常运行和显示.
Page37of38为了达到流畅的WebGL用户体验,需要的条件如下:1、支持3D渲染效果的ATI4系列以上显卡硬件,及其驱动支持;2、高版本的mesa3D渲染库;3、Chrome或者Firefox20以上的浏览器版本.
满足上述软硬件条件后,在浏览器中,WebGL应达到至少20FPS以上的3D渲染效果.
如果上述效果不能实现,应该尝试满足上述软硬件适配条件或直接联系龙芯公司相关技术支持人员.
(41)龙芯处理器的功耗控制手段有哪些龙芯3A处理器,可以通过关闭部分模块时钟或者调低某些时钟运行频率的手段来降低处理器内部的动态功耗.
因为龙芯3A处理器内部的所有处理器核、路由网络及共享Cache等部分都共用一个时钟,不可以分开调频,但有些部分可以分别关闭.
所以通常系统负载低的情况下先关闭不需要的处理器核,剩余一个处理器核时再降低其工作频率.
其中,关闭处理器核时需要注意的地方请参考问题24,而处理器核调频的控制需要通过配置寄存器0xBFE00180的低三位进行.
龙芯3A处理器中的其它部分如果不用可以关闭.
如不用的HT总线可以通过控制器内部寄存器(Trans_off)来关闭PHY,寄存器地址为0x9000_0FD_FB00_0044;而HT控制器时钟可以通过配置寄存器0xBFE00180的两个HT_en位来进行关闭,或者使用HT_freq_scale_ctrl来进行分频控制.
不用的内存控制器也可以通过这个寄存器的Mc_en位来关闭.
而龙芯3B处理器,因为清空处理器核内的私有Cache比较麻烦,所以不建议进行关闭处理器核的处理.
但是,龙芯3B处理器支持各个处理器核的时钟频率分别调整,所以功耗控制策略与龙芯3A处理器有所不同.
系统负载低的情况下可以分别调整各个处理器核的分频寄存器(0xBFE001D0),如果所有处理器核的负载都比较低时,可以通过重新设置PLL的方法来重新调整时钟频率,此时就可以通过降低外部电压(VDD_N0/VDD_N1)的办法来获得更大的功耗.
其中,重新设置PLL的方法可以参考用户手册的2.
6节.
龙芯3B处理器中,路由网络及共享Cache等部分时钟共享,但内部两个节点的这些时钟独立,因此对这部分时钟也可以采用类似处理器核功耗控制的方法来进行(外部电压不能调整).
龙芯3B处理器的其它部分功耗与龙芯3A类似,在此不再重复.
系统上还可以通过内存自刷新来进行STR,使系统待机.
Page38of38

HostKvm($4.25/月)俄罗斯/香港高防VPS

HostKvm又上新了,这次上架了2个线路产品:俄罗斯和香港高防VPS,其中俄罗斯经测试电信CN2线路,而香港高防VPS提供30Gbps攻击防御。HostKvm是一家成立于2013年的国外主机服务商,主要提供基于KVM架构的VPS主机,可选数据中心包括日本、新加坡、韩国、美国、中国香港等多个地区机房,均为国内直连或优化线路,延迟较低,适合建站或者远程办公等。俄罗斯VPSCPU:1core内存:2G...

宝塔面板企业版和专业版618年中活动 永久授权仅1888元+

我们一般的站长或者企业服务器配置WEB环境会用到免费版本的宝塔面板。但是如果我们需要较多的付费插件扩展,或者是有需要企业功能应用的,短期来说我们可能选择按件按月付费的比较好,但是如果我们长期使用的话,有些网友认为选择宝塔面板企业版或者专业版是比较划算的。这样在年中大促618的时候,我们也可以看到宝塔面板也有发布促销活动。企业版年付899元,专业版永久授权1888元起步。对于有需要的网友来说,还是值...

无忧云:洛阳/大连BGP云服务器38.4元/月,雅安物理机服务器315元/月起,香港荃湾CN2限时5折优惠

无忧云怎么样?无忧云是一家成立于2017年的老牌商家旗下的服务器销售品牌,现由深圳市云上无忧网络科技有限公司运营,是正规持证IDC/ISP/IRCS商家,主要销售国内、中国香港、国外服务器产品,线路有腾讯云国外线路、自营香港CN2线路等,都是中国大陆直连线路,非常适合免备案建站业务需求和各种负载较高的项目,同时国内服务器也有多个BGP以及高防节点,目前商家开启了夏日清凉补贴活动,商家的机器还是非常...

fedora13为你推荐
特朗普取消访问丹麦特朗普首次出访为什么选择梵蒂冈嘉兴商标注册如何注册商标怎样商标注册李子柒年入1.6亿李子柒男朋友是谁,李子柒父母怎么去世的?www.kkk.comwww.kkk103.com网站产品质量有保证吗xyq.163.cbg.com梦幻西游藏宝阁百花百游百花百游的五滴自游进程百花百游百花净斑方效果怎么样?同ip站点同ip站点很多有没有影响?www.119mm.comwww.993mm+com精品集!www.kanav001.com跪求下载[GJOS-024] 由愛可奈 [Kana Yume] 現役女子高生グラビア种子的网址谁有
免费试用vps 免费申请网站域名 香港机房 59.99美元 evssl 警告本网站 panel1 浙江独立 河南m值兑换 idc查询 防cc攻击 工信部icp备案查询 电信宽带测速软件 黑科云 asp简介 linux命令vi wordpress安装 rewrite规则 qq登陆空间 双宿主机 更多