电子发烧友网 > 嵌入式技术 > 正文

正则表达式里很难发现的几大问题分析

2019年01月07日 17:19 次阅读

线上一个项目监控信息突然报告异常,上到机器上后查看相关资源的使用情况,发现 CPU 利用率将近 100%。通过 Java 自带的线程 Dump 工具,我们导出了出问题的堆栈信息。

正则表达式里很难发现的几大问题分析

我们可以看到所有的堆栈都指向了一个名为 validateUrl 的方法,这样的报错信息在堆栈中一共超过 100 处。通过排查代码,我们知道这个方法的主要功能是校验 URL 是否合法。

很奇怪,一个正则表达式怎么会导致 CPU 利用率居高不下。为了弄清楚复现问题,我们将其中的关键代码摘抄出来,做了个简单的单元测试。

9public static void main(String[] args) { String badRegex = “^([hH][tT]{2}[pP]://|[hH][tT]{2}[pP][sS]://)(([A-Za-z0-9-~]+)。)+([A-Za-z0-9-~\\\\/])+$”; String bugUrl = “http://www.fapiao.com/dddp-web/pdf/download?request=6e7JGxxxxx4ILd-kExxxxxxxqJ4-CHLmqVnenXC692m74H38sdfdsazxcUmfcOH2fAfY1Vw__%5EDadIfJgiEf”; if (bugUrl.matches(badRegex)) { System.out.println(“match!!”); } else { System.out.println(“no match!!”); }}

当我们运行上面这个例子的时候,通过资源监视器可以看到有一个名为 java 的进程 CPU 利用率直接飙升到了 91.4% 。

正则表达式里很难发现的几大问题分析

看到这里,我们基本可以推断,这个正则表达式就是导致 CPU 利用率居高不下的凶手!

于是,我们将排错的重点放在了那个正则表达式上:

^([hH][tT]{2}[pP]://|[hH][tT]{2}[pP][sS]://)(([A-Za-z0-9-~]+)。)+([A-Za-z0-9-~\\/])+$

这个正则表达式看起来没什么问题,可以分为三个部分:

第一部分匹配 http 和 https 协议,第二部分匹配 www. 字符,第三部分匹配许多字符。我看着这个表达式发呆了许久,也没发现没有什么大的问题。

其实这里导致 CPU 使用率高的关键原因就是:Java 正则表达式使用的引擎实现是 NFA 自动机,这种正则表达式引擎在进行字符匹配时会发生回溯(backtracking)。而一旦发生回溯,那其消耗的时间就会变得很长,有可能是几分钟,也有可能是几个小时,时间长短取决于回溯的次数和复杂度。

看到这里,可能大家还不是很清楚什么是回溯,还有点懵。没关系,我们一点点从正则表达式的原理开始讲起。

正则表达式引擎

正则表达式是一个很方便的匹配符号,但要实现这么复杂,功能如此强大的匹配语法,就必须要有一套算法来实现,而实现这套算法的东西就叫做正则表达式引擎。简单地说,实现正则表达式引擎的有两种方式:DFA 自动机(DeterminisTIc Final Automata 确定型有穷自动机)和 NFA 自动机(Non determinisTIc Finite Automaton 不确定型有穷自动机)。

对于这两种自动机,他们有各自的区别,这里并不打算深入将它们的原理。简单地说,DFA 自动机的时间复杂度是线性的,更加稳定,但是功能有限。而 NFA 的时间复杂度比较不稳定,有时候很好,有时候不怎么好,好不好取决于你写的正则表达式。但是胜在 NFA 的功能更加强大,所以包括 Java 、.NET、Perl、Python、Ruby、PHP 等语言都使用了 NFA 去实现其正则表达式。

那 NFA 自动机到底是怎么进行匹配的呢?我们以下面的字符和表达式来举例说明。

2text=“Today is a nice day.”regex=“day”

要记住一个很重要的点,即:NFA 是以正则表达式为基准去匹配的。也就是说,NFA 自动机会读取正则表达式的一个一个字符,然后拿去和目标字符串匹配,匹配成功就换正则表达式的下一个字符,否则继续和目标字符串的下一个字符比较。或许你们听不太懂,没事,接下来我们以上面的例子一步步解析。

首先,拿到正则表达式的第一个匹配符:d。于是那去和字符串的字符进行比较,字符串的第一个字符是 T,不匹配,换下一个。第二个是 o,也不匹配,再换下一个。第三个是 d,匹配了,那么就读取正则表达式的第二个字符:a。

读取到正则表达式的第二个匹配符:a。那着继续和字符串的第四个字符 a 比较,又匹配了。那么接着读取正则表达式的第三个字符:y。

读取到正则表达式的第三个匹配符:y。那着继续和字符串的第五个字符 y 比较,又匹配了。尝试读取正则表达式的下一个字符,发现没有了,那么匹配结束。

上面这个匹配过程就是 NFA 自动机的匹配过程,但实际上的匹配过程会比这个复杂非常多,但其原理是不变的。

NFA自动机的回溯

了解了 NFA 是如何进行字符串匹配的,接下来我们就可以讲讲这篇文章的重点了:回溯。为了更好地解释回溯,我们同样以下面的例子来讲解。

2text=“abbc”regex=“ab{1,3}c”

上面的这个例子的目的比较简单,匹配以 a 开头,以 c 结尾,中间有 1-3 个 b 字符的字符串。NFA 对其解析的过程是这样子的:

首先,读取正则表达式第一个匹配符 a 和 字符串第一个字符 a 比较,匹配了。于是读取正则表达式第二个字符。

读取正则表达式第二个匹配符 b{1,3} 和字符串的第二个字符 b 比较,匹配了。但因为 b{1,3} 表示 1-3 个 b 字符串,以及 NFA 自动机的贪婪特性(也就是说要尽可能多地匹配),所以此时并不会再去读取下一个正则表达式的匹配符,而是依旧使用 b{1,3} 和字符串的第三个字符 b 比较,发现还是匹配。于是继续使用 b{1,3} 和字符串的第四个字符 c 比较,发现不匹配了。此时就会发生回溯。发生回溯是怎么操作呢?

发生回溯后,我们已经读取的字符串第四个字符 c 将被吐出去,指针回到第三个字符串的位置。之后,程序读取正则表达式的下一个操作符 c,读取当前指针的下一个字符 c 进行对比,发现匹配。于是读取下一个操作符,但这里已经结束了。

下面我们回过头来看看前面的那个校验 URL 的正则表达式:

^([hH][tT]{2}[pP]://|[hH][tT]{2}[pP][sS]://)(([A-Za-z0-9-~]+)。)+([A-Za-z0-9-~\\/])+$

出现问题的 URL 是:

http://www.fapiao.com/dzfp-web/pdf/download?request=6e7JGm38jfjghVrv4ILd-kEn64HcUX4qL4a4qJ4-CHLmqVnenXC692m74H5oxkjgdsYazxcUmfcOH2fAfY1Vw__%5EDadIfJgiEf

我们把这个正则表达式分为三个部分:

正则表达式里很难发现的几大问题分析

另外一个问题是在正则表达式的第三部分,我们发现出现问题的 URL 是有下划线(_)和百分号(%)的,但是对应第三部分的正则表达式里面却没有。这样就会导致前面匹配了一长串的字符之后,发现不匹配,最后回溯回去。

这是这个正则表达式存在的第二个问题。

解决方案

明白了回溯是导致问题的原因之后,其实就是减少这种回溯,你会发现如果我在第三部分加上下划线和百分号之后,程序就正常了。

9public staTIc void main(String[] args) { String badRegex = “^([hH][tT]{2}[pP]://|[hH][tT]{2}[pP][sS]://)(([A-Za-z0-9-~]+)。)+([A-Za-z0-9-~_%\\\\/])+$”; String bugUrl = “http://www.fapiao.com/dddp-web/pdf/download?request=6e7JGxxxxx4ILd-kExxxxxxxqJ4-CHLmqVnenXC692m74H38sdfdsazxcUmfcOH2fAfY1Vw__%5EDadIfJgiEf”; if (bugUrl.matches(badRegex)) { System.out.println(“match!!”); } else { System.out.println(“no match!!”); }}

运行上面的程序,立刻就会打印出match!!。

但这是不够的,如果以后还有其他 URL 包含了乱七八糟的字符呢,我们难不成还再修改一遍。肯定不现实嘛!

其实在正则表达式中有这么三种模式:贪婪模式、懒惰模式、独占模式。

在关于数量的匹配中,有 + ? * {min,max} 四种两次,如果只是单独使用,那么它们就是贪婪模式。

如果在他们之后加多一个 ? 符号,那么原先的贪婪模式就会变成懒惰模式,即尽可能少地匹配。但是懒惰模式还是会发生回溯现象的。例如下面这个例子:

2text=“abbc”regex=“ab{1,3}?c”

正则表达式的第一个操作符 a 与 字符串第一个字符 a 匹配,匹配成功。于是正则表达式的第二个操作符 b{1,3}? 和 字符串第二个字符 b 匹配,匹配成功。因为最小匹配原则,所以拿正则表达式第三个操作符 c 与字符串第三个字符 b 匹配,发现不匹配。于是回溯回去,拿正则表达式第二个操作符 b{1,3}? 和字符串第三个字符 b 匹配,匹配成功。于是再拿正则表达式第三个操作符 c 与字符串第四个字符 c 匹配,匹配成功。于是结束。

如果在他们之后加多一个 + 符号,那么原先的贪婪模式就会变成独占模式,即尽可能多地匹配,但是不回溯。

于是乎,如果要彻底解决问题,就要在保证功能的同时确保不发生回溯。我将上面校验 URL 的正则表达式的第二部分后面加多了个 + 号,即变成这样:

3^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+)。)++ ---》》》 (这里加了个+号)([A-Za-z0-9-~_%\\\/])+$

这样之后,运行原有的程序就没有问题了。

最后推荐一个网站,这个网站可以检查你写的正则表达式和对应的字符串匹配时会不会有问题。

Online regex tester and debugger: PHP, PCRE, Python, Golang and JavaScript

例如我本文中存在问题的那个 URL 使用该网站检查后会提示:catastrophic backgracking(灾难性回溯)。

正则表达式里很难发现的几大问题分析

当你点击左下角的「regex debugger」时,它会告诉你一共经过多少步检查完毕,并且会将所有步骤都列出来,并标明发生回溯的位置。

正则表达式里很难发现的几大问题分析

本文中的这个正则表达式在进行了 11 万步尝试之后,自动停止了。这说明这个正则表达式确实存在问题,需要改进。

但是当我用我们修改过的正则表达式进行测试,即下面这个正则表达式。

^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+)。)++([A-Za-z0-9-~\\\/])+$

工具提示只用了 58 步就完成了检查。

正则表达式里很难发现的几大问题分析

下载发烧友APP

打造属于您的人脉电子圈

关注电子发烧友微信

有趣有料的资讯及技术干货

关注发烧友课堂

锁定最新课程活动及技术直播

电子发烧友观察

一线报道 · 深度观察 · 最新资讯
收藏 人收藏
分享:

评论

相关推荐

后摩尔定律时代 芯片发展新趋势

很长一段时间以来,摩尔定律和它的最终结局一直就像房间里的大象,不容忽视。英特尔联合创始人戈登·摩尔在...

发表于 2019-01-07 16:34 272次阅读
后摩尔定律时代 芯片发展新趋势

怎么从VISA输出中获取二进制数据

发表于 2019-01-07 15:49 16次阅读
怎么从VISA输出中获取二进制数据

从物连网到物联网 打造智慧平安的绿色新城

中国物联网产业规模和设备数量正处于高质量增长黄金期,物联网对数字经济、产业转型升级、节能减排、社会“...

发表于 2019-01-07 15:15 252次阅读
从物连网到物联网 打造智慧平安的绿色新城

高云半导体与荷兰Intrinsic ID展开合作...

 BroadKey技术可为可编程FPGA芯片提供不可更改、不可克隆的器件识别解决方案,包括ARM和R...

发表于 2019-01-07 11:56 824次阅读
高云半导体与荷兰Intrinsic ID展开合作...

美银美林将Intel股票评级从中性调高至买入

去年Q4,美国科技股震荡,以NVIDIA和FAANG(Facebook/Apple/Amazon/N...

发表于 2019-01-06 10:33 40次阅读
美银美林将Intel股票评级从中性调高至买入

如何解决PLCS7-200CPU输出模块烧坏的问...

在输出端24V电压上串入200V电压,使的于此输出模块相连的多个元件烧坏,此模块多个端子间短路.应该...

发表于 2019-01-05 10:19 273次阅读
如何解决PLCS7-200CPU输出模块烧坏的问...

BenchLink Data Logger 3如何使用新版本快速采集

发表于 2019-01-04 15:22 33次阅读
BenchLink Data Logger 3如何使用新版本快速采集

几个I2C从设备与CX3连接,I2C操作可以阻止UVC流吗?

发表于 2019-01-04 14:26 156次阅读
几个I2C从设备与CX3连接,I2C操作可以阻止UVC流吗?

IT从业者应该知道的CPU Cache相关的知识

随着工艺的提升最近几十年CPU的频率不断提升,而受制于制造工艺和成本限制,目前计算机的内存主要是DR...

发表于 2019-01-04 09:30 248次阅读
IT从业者应该知道的CPU Cache相关的知识

剖析AI芯片的架构、分类及关键技术

人工智能芯片目前有两种发展路径:一种是延续传统计算架构,加速硬件计算能力,主要以 3 种类型的芯片为...

发表于 2019-01-04 08:40 271次阅读
剖析AI芯片的架构、分类及关键技术

单片机应用系统的结构及工作原理

将CPU、存储器和输入/输出接口等制作在一块集成电路中就构成了单片机,但单独一块单片机集成电路时无法...

发表于 2019-01-03 15:58 159次阅读
单片机应用系统的结构及工作原理

唤醒需要很长时间

发表于 2019-01-03 14:23 113次阅读
唤醒需要很长时间

ISE 14.7 Windows 10运行xsetup.exe请求访问权限

发表于 2019-01-03 11:02 59次阅读
ISE 14.7 Windows 10运行xsetup.exe请求访问权限

ADuCM360电源模式1~5,利用串口无法将CPU唤醒吗

发表于 2019-01-03 10:38 31次阅读
ADuCM360电源模式1~5,利用串口无法将CPU唤醒吗

8块2080ti主机炫到没朋友

为了等新一代图灵显卡上市,我的新电脑配件搁置了一个月。现在终于可以将新显卡公之于众了,我就赶紧抄起家...

发表于 2019-01-02 16:30 291次阅读
8块2080ti主机炫到没朋友

有钱人是这样配置电脑的

现在电脑的使用很普遍了,几乎每家都配有电脑。而市面上的电脑品牌、系列、型号有很多,可选择性多,就算是...

发表于 2019-01-02 16:05 339次阅读
有钱人是这样配置电脑的

STM32L011E4Y6的内存操作不能赋值给CRC3

发表于 2019-01-02 10:10 191次阅读
STM32L011E4Y6的内存操作不能赋值给CRC3

Linux经常出现的3道基础面试题快来复习吧

一请问uboot启动过程都做了些什么?二为什么uboot要关掉cache? 三nandflash和...

发表于 2018-12-31 10:40 333次阅读
Linux经常出现的3道基础面试题快来复习吧

五个主流Linux发行版在过去近三年里所经历的性...

可以看到,测试所使用的机器配置十分强劲,英特尔酷睿 i7 5775C 仍然是强大的 CPU,特别是其...

发表于 2018-12-28 17:38 1053次阅读
五个主流Linux发行版在过去近三年里所经历的性...

虚拟化是什么

虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每...

发表于 2018-12-28 16:32 590次阅读
虚拟化是什么

工业控制常用的接口协议大全

工业控制网络的节点大都是具有计算与通信能力的测量设备。它们可能具有嵌入式CPU,但功能比较单一,其计...

发表于 2018-12-28 16:31 807次阅读
工业控制常用的接口协议大全

如何涂抹cpu散热膏

运行大程序或者过多程序同时运行会导致电脑CPU发热,在CPU上涂散热膏可以有效降低CPU的工作温度。

发表于 2018-12-27 16:14 511次阅读
如何涂抹cpu散热膏

请问stm32中设置的系统时钟和delay延迟有什么关系?

发表于 2018-12-27 09:00 114次阅读
请问stm32中设置的系统时钟和delay延迟有什么关系?

你所见过哪些奇葩的算法有哪些?

首先去买一捆面条,我喜欢手擀面。找到数组中最大和最小的两个数(O(n)),让最大的数对应一根很长的面...

发表于 2018-12-26 15:52 380次阅读
你所见过哪些奇葩的算法有哪些?

基于Sitara AM57x千兆位以太网EtherCAT主接口解决方案

发表于 2018-12-26 14:40 77次阅读
基于Sitara AM57x千兆位以太网EtherCAT主接口解决方案

Arm服务器处理器参数曝光

而对于业界关注的服务器芯片,华为表示将在2019年推出。采用台积电7nm工艺制造,在ARMv8架构的...

发表于 2018-12-25 11:28 873次阅读
Arm服务器处理器参数曝光

intel新CPU架构详细解读

在近日举办的架构日活动上,英特尔罕见地公布了未来多年的CPU、GPU架构路线图,以及一系列相关技术、...

发表于 2018-12-25 11:25 500次阅读
intel新CPU架构详细解读

AMD多款CPU将亮相CES2019 还包括一款...

一年一度的CES 2019大展即将开幕,据最新可靠消息,AMD这次会在三条产品线上集中推新,势头非常...

发表于 2018-12-25 10:07 456次阅读
AMD多款CPU将亮相CES2019 还包括一款...

如何启用/禁用M4浮点单元

发表于 2018-12-24 16:23 83次阅读
如何启用/禁用M4浮点单元

300 CPU MMC卡密码忘了怎么办?方法有三...

出现以上这些状况时CPU的STOP灯出现慢闪,这是CPU在请求被动格式化,只有此时可以用MRES按钮...

发表于 2018-12-24 15:41 451次阅读
300 CPU MMC卡密码忘了怎么办?方法有三...

讲讲关于无源晶体的几个重要参数

Nominal Frequency晶体元件频率,也是工程师在电路设计和元件选购时首要关注的参数。晶振...

发表于 2018-12-24 14:27 763次阅读
讲讲关于无源晶体的几个重要参数

Wave Computing宣布了一则重磅消息:...

此次开源的是 MIPS 32/64位指令集Releas 6版本,MIPS指令集架构自上世纪80年代出...

发表于 2018-12-24 14:15 1020次阅读
Wave Computing宣布了一则重磅消息:...

i5-8400与锐龙52600哪个性价比最高

自2008年11月17日第一代酷睿i系列处理器发布之后,获得了绝对性能优势的Intel就开始了漫长的...

发表于 2018-12-24 09:45 605次阅读
i5-8400与锐龙52600哪个性价比最高

全球TOP5笔记本厂商出货量同比下滑11%,英特...

这一现象的主要原因在于英特尔的CPU短缺,以及持续的中美贸易紧张局势。具体的厂商方面,惠普(HP)同...

发表于 2018-12-23 17:05 1283次阅读
全球TOP5笔记本厂商出货量同比下滑11%,英特...

用于衡量CPU的繁忙程度的正确指标

在停顿周期内,不能执行指令,这意味着你的程序不往前走。值得注意的是,图中 “Stalled” 状态所...

发表于 2018-12-23 13:50 411次阅读
用于衡量CPU的繁忙程度的正确指标

如何使用OFF-CPU火焰图调查分析Linux性...

本文用off-cpu火焰图分析一个程序的延迟(主要在拿锁上),找出来瓶颈,并消除该瓶颈的故事。本文非...

发表于 2018-12-23 13:47 449次阅读
如何使用OFF-CPU火焰图调查分析Linux性...

嵌入式系统编程软件架构的C语言模块化程序设计的概...

模块划分的"划"是规划的意思,意指怎样合理的将一个很大的软件划分为一系列功能独立的部分合作完成系统的...

发表于 2018-12-23 11:56 659次阅读
嵌入式系统编程软件架构的C语言模块化程序设计的概...

详解3NX-NNA,升级5大核心带来哪些改变?

而Imagination则在2017年就发布了全球第一款神经网络加速器PowerVR®2NX NNA...

发表于 2018-12-22 16:15 1620次阅读
详解3NX-NNA,升级5大核心带来哪些改变?

AMD新速龙发布 频率1000MHz热设计功耗为...

9月初,AMD正式发布了首次采用Zen CPU、Vega GPU双重新架构的速龙200GE系列,首发...

发表于 2018-12-22 14:39 130次阅读
AMD新速龙发布 频率1000MHz热设计功耗为...

总线的分类和区别

在计算机系统的硬件组成中,总线(Bus)是不可缺少的一部分,将各大基本部件按照一定的方式链接起来就构...

发表于 2018-12-22 11:29 640次阅读
总线的分类和区别

ARM主导CPU和计算机,对英特尔和ADM会造成...

如果ARM能够克服信任和第三方开发人员这两个障碍,它的发展前景将无可限量。英特尔和AMD将重蹈20世...

发表于 2018-12-22 10:00 504次阅读
ARM主导CPU和计算机,对英特尔和ADM会造成...

国外媒体发iPhone 11渲染图:取消刘海屏/...

背部则配备后置三摄,或采用1200万+1200万+800万像素的组合,支持OIS光学防抖和光学变焦。...

发表于 2018-12-21 17:02 1357次阅读
国外媒体发iPhone 11渲染图:取消刘海屏/...

Intel最终放弃晶圆代工 价格高高在上成为名义...

Intel本周方才宣布了雄心勃勃的晶圆厂新/改/扩建计划,没想到迅速被浇了一盆冷水。来自半导体产业链...

发表于 2018-12-21 14:49 323次阅读
Intel最终放弃晶圆代工 价格高高在上成为名义...

Intel公布六代全新CPU架构

据国外媒体报道,英特尔公司高管近日表示,他们会在明年年底量产10nm的处理器,对7nm工艺的研发进程...

发表于 2018-12-19 17:02 1196次阅读
Intel公布六代全新CPU架构

科技新闻精选:英特尔发布新款CPU微架构:基于1...

特斯拉6月向曾担任该公司工艺工程师的特里普发起这桩诉讼,指控他非法输出数据并向记者提供了虚假信息。特...

发表于 2018-12-19 13:54 694次阅读
科技新闻精选:英特尔发布新款CPU微架构:基于1...

亚马逊推出首款自研CPU和AI云芯片

11月26日至30日,亚马逊2018 re:Invent 开发者大会在美国拉斯维加斯举行。

发表于 2018-12-18 16:21 803次阅读
亚马逊推出首款自研CPU和AI云芯片

DRAM市况冷飕飕 合约价跌幅高达一成

明年合约价首季跌幅恐持续扩大,预估价格跌势恐至明年第2季中旬才会趋缓。

发表于 2018-12-18 14:04 511次阅读
DRAM市况冷飕飕 合约价跌幅高达一成

通富微电已封测全球首个7nm CPU

在半导体领域,国内公司最弱的是先进制造,其次是半导体设计,而在封测领域国内公司并不算弱,江苏长电已经...

发表于 2018-12-18 10:21 665次阅读
通富微电已封测全球首个7nm CPU

gpu加速原理

GPU一推出就包含了比CPU更多的处理单元,更大的带宽,使得其在多媒体处理过程中能够发挥更大的效能。...

发表于 2018-12-17 16:17 677次阅读
gpu加速原理

英特尔新战略解读

编者按:英特尔近日举办了一场“架构日”活动,公布了未来多年的产品技术路线图、战略规划,范围之广、之深...

发表于 2018-12-17 14:16 275次阅读
英特尔新战略解读

华硕开放速龙200GE超频 在4050MHz的高...

速龙200GE是第一款采用Zen CPU+Vega GPU架构的入门级新速龙(后续还有速龙220GE...

发表于 2018-12-17 14:12 252次阅读
华硕开放速龙200GE超频 在4050MHz的高...

2018H1中国AI基础架构增长势头强劲,浪潮市...

GPU服务器在AI基础架构领域的主流地位仍然不容撼动,销售额占比为98.9%。2018年上半年,GP...

发表于 2018-12-16 10:33 147次阅读
2018H1中国AI基础架构增长势头强劲,浪潮市...

泽塔云GPU云zVision Extreme 2...

提到zVision Extreme,可谓是泽塔云的明星产品之一,它是基于超融合的GPU虚拟化解决方案...

发表于 2018-12-16 10:28 471次阅读
泽塔云GPU云zVision Extreme 2...

内存安装和使用常见问题的解决方法资料分析

自锐龙平台发布以来,AMD CPU凭借超高的性价比迅速崛起,如今整个市场已成为AMD和Intel平分...

发表于 2018-12-15 11:11 767次阅读
内存安装和使用常见问题的解决方法资料分析

面对竞争对手,英特尔推出三个行动方案

新的微架构被称为Sunny Cove,用以取代Skylake。英特尔并没有透露Sunny Cove具...

发表于 2018-12-14 09:36 518次阅读
面对竞争对手,英特尔推出三个行动方案

存储器体制的现状和未来改变

严格来讲,是存储器(memory)和储存器(storage)。前者是指在运算中的暂存器,譬如SRAM...

发表于 2018-12-14 08:34 794次阅读
存储器体制的现状和未来改变

盘点台系电子代工厂营收情况

台系主要电子代工厂包括广达、和硕、仁宝、英业达、纬创已公布11月营收,表现不同调,尽管市场预期旺季不...

发表于 2018-12-13 15:17 503次阅读
盘点台系电子代工厂营收情况

Velox机器人用起伏推进系统有效地滑过水面

多年来,我们已经看到了许多有趣的机器人设计,这些设计允许冒险的机器在艰难的地形上进行协商,但很少有来...

发表于 2018-12-13 14:29 648次阅读
Velox机器人用起伏推进系统有效地滑过水面

Linux内核同步机制之原子操作

从上面的定义来看,atomic_t实际上就是一个int类型的counter,不过定义这样特殊的类型a...

发表于 2018-12-13 14:05 533次阅读
Linux内核同步机制之原子操作

联发科发布Helio P90:升级A75CPU、...

赶在今天的深圳发布会前,联发科提前在海外揭晓了曦力家族新品Helio P90芯片。CPU架构方面,P...

发表于 2018-12-13 09:28 297次阅读
联发科发布Helio P90:升级A75CPU、...

Intel宣布将参加明年1月份的CES2019 ...

Intel今日宣布,将参加明年1月份在拉斯维加斯举办的CES 2019展会。

发表于 2018-12-12 15:42 156次阅读
Intel宣布将参加明年1月份的CES2019 ...

亚马逊自研芯片,对英特尔形成威胁了吗?

编者按: 2018年10月26日,英特尔公布了好于预期的2018年第三季度财报。财报显示,数据中心集...

发表于 2018-12-11 09:15 791次阅读
亚马逊自研芯片,对英特尔形成威胁了吗?

高通新旗舰骁龙855移动平台的更多细节

骁龙855处理器采用第四代AI人工智能引擎,提升50%算术逻辑单元可实现每秒钟7万亿次的处理。另外高...

发表于 2018-12-08 10:47 1556次阅读
高通新旗舰骁龙855移动平台的更多细节

i9-9900K用中低端主板真的会变弱吗

九代酷睿发布已经过了一段时间了,其最大的改变就是CPU规格进一步上涨,最高达到了8核16线程,频率也...

发表于 2018-12-08 10:44 548次阅读
i9-9900K用中低端主板真的会变弱吗

PolarFire SoC的硬件CPU子系统和可...

Microchip可编程解决方案业务部副总裁Bruce Weyer表示:“PolarFire SoC...

发表于 2018-12-08 10:43 773次阅读
PolarFire SoC的硬件CPU子系统和可...

Intel额外增资10亿 用于使用更先进的工艺技...

虽然14nm行将收尾,但是却有大量的客户在赶“末班车”,导致CPU供货告急。

发表于 2018-12-08 10:41 100次阅读
Intel额外增资10亿 用于使用更先进的工艺技...

骁龙855和麒麟980到底谁比较和详细性能对比资...

今年的7nm SoC之争更加胶着,不过骁龙855还有一记杀手锏就是X50 5G基带。昨天,骁龙855...

发表于 2018-12-08 10:16 2523次阅读
骁龙855和麒麟980到底谁比较和详细性能对比资...

华为Mate20系列三款你想选哪个华为Mate2...

对于华为,我们后台的同学都十分好奇,Mate 20系列到底买哪个比较好?在新版本系统适配以及老机型的...

发表于 2018-12-08 10:08 1828次阅读
华为Mate20系列三款你想选哪个华为Mate2...

国外网友用EVGAZ390DARK主板将i9-9...

10月9日凌晨,Intel在美国秋季新品发布会上,正式推出第九代酷睿家族以及配套的Z390芯片,首批...

发表于 2018-12-05 15:22 372次阅读
国外网友用EVGAZ390DARK主板将i9-9...

采用Qualcomm骁龙670处理器的手机性能介...

纵观2018年的手机市场,随着工艺的日趋成熟,让手机可以呈现多变的色彩,光影之间更加彰显品质。Qua...

发表于 2018-12-05 09:58 1030次阅读
采用Qualcomm骁龙670处理器的手机性能介...

TMS320VC5501 定点数字信号处理器

TMS320VC5501(5501)定点数字信号处理器(DSP)基于TMS320C55x™DSP生成CPU处理器内核。 C55x™DSP架构通过增加并行性和全面关注降低功耗来实现高性能和低功耗。 CPU支持内部总线结构,该结构由一个程序总线,三个数据读总线,两个数据写总线以及专用于外设和DMA活动的附加总线组成。这些总线能够在一个周期内执行最多三次数据读取和两次数据写入。并行,DMA控制器可以独立于CPU活动执行数据传输。 C55x™CPU提供两个乘法累加(MAC)单元,每个单元能够进行17位×17位乘法运算。单循环。额外的16位ALU支持中央40位算术/逻辑单元(ALU)。 ALU的使用受指令集控制,提供优化并行活动和功耗的能力。这些资源在C55x CPU的地址单元(AU)和数据单元(DU)中进行管理。 C55x DSP代支持可变字节宽度指令集,以提高代码密度。指令单元(IU)从内部或外部存储器执行32位程序提取,并为程序单元(PU)排队指令。程序单元解码指令,将任务指向AU和DU资源,并管理完全受保护的管道。预测分支功能可避免执行条件指令时的管道刷新。 5501外设...

发表于 2018-10-09 14:55 39次阅读
TMS320VC5501 定点数字信号处理器