电子发烧友网 > 处理器/DSP > 正文

深度解读多处理器调度问题

2020年05月31日 10:42 次阅读

本章将介绍多处理器调度(multiprocessor scheduling)的基础知识。由于本章内容相对较深,建议认真学习并发相关的内容后再读。

过去很多年,多处理器(mulTIprocessor)系统只存在于高端服务器中。现在,它们越来越多地出现在个人PC、笔记本电脑甚至移动设备上。多核处理器(mulTIcore)将多个CPU核组装在一块芯片上,是这种扩散的根源。由于计算机的架构师们当时难以让单核CPU更快,同时又不增加太多功耗,所以这种多核CPU很快就变得流行。现在,我们每个人都可以得到一些CPU,这是好事,对吧?

当然,多核CPU带来了许多困难。主要困难是典型的应用程序(例如你写的很多C程序)都只使用一个CPU,增加了更多的CPU并没有让这类程序运行得更快。为了解决这个问题,不得不重写这些应用程序,使之能并行(parallel)执行,也许使用多线程(thread,本书的第2部分将用较多篇幅讨论)。多线程应用可以将工作分散到多个CPU上,因此CPU资源越多就运行越快。

补充:高级章节

需要阅读本书的更多内容才能真正理解高级章节,但这些内容在逻辑上放在一章里。例如,本章是关于多处理器调度的,如果先学习了中间部分的并发知识,会更有意思。但是,从逻辑上它属于本书中虚拟化(一般)和CPU调度(具体)的部分。因此,建议不按顺序学习这些高级章节。对于本章,建议在本书第2部分之后学习。

除了应用程序,操作系统遇到的一个新的问题是(不奇怪!)多处理器调度(mulTIprocessor scheduling)。到目前为止,我们讨论了许多单处理器调度的原则,那么如何将这些想法扩展到多处理器上呢?还有什么新的问题需要解决?因此,我们的问题如下。

关键问题:如何在多处理器上调度工作

操作系统应该如何在多CPU上调度工作?会遇到什么新问题?已有的技术依旧适用吗?是否需要新的思路?

10.1 背景:多处理器架构

为了理解多处理器调度带来的新问题,必须先知道它与单CPU之间的基本区别。区别的核心在于对硬件缓存(cache)的使用(见图10.1),以及多处理器之间共享数据的方式。本章将在较高层面讨论这些问题。更多信息可以其他地方找到[CSG99],尤其是在高年级或研究生计算机架构课程中。

在单CPU系统中,存在多级的硬件缓存(hardware cache),一般来说会让处理器更快地执行程序。缓存是很小但很快的存储设备,通常拥有内存中最热的数据的备份。相比之下,内存很大且拥有所有的数据,但访问速度较慢。通过将频繁访问的数据放在缓存中,系统似乎拥有又大又快的内存。

举个例子,假设一个程序需要从内存中加载指令并读取一个值,系统只有一个CPU,拥有较小的缓存(如64KB)和较大的内存。

程序***次读取数据时,数据在内存中,因此需要花费较长的时间(可能数十或数百纳秒)。处理器判断该数据很可能会被再次使用,因此将其放入CPU缓存中。如果之后程序再次需要使用同样的数据,CPU会先查找缓存。因为在缓存中找到了数据,所以取数据快得多(比如几纳秒),程序也就运行更快。

缓存是基于局部性(locality)的概念,局部性有两种,即时间局部性和空间局部性。时间局部性是指当一个数据被访问后,它很有可能会在不久的将来被再次访问,比如循环代码中的数据或指令本身。而空间局部性指的是,当程序访问地址为x

的数据时,很有可能会紧接着访问x

周围的数据,比如遍历数组或指令的顺序执行。由于这两种局部性存在于大多数的程序中,硬件系统可以很好地预测哪些数据可以放入缓存,从而运行得很好。

有趣的部分来了:如果系统有多个处理器,并共享同一个内存,如图10.2所示,会怎样呢?

图10.1 带缓存的单CPU

图10.2 两个有缓存的CPU共享内存

事实证明,多CPU的情况下缓存要复杂得多。例如,假设一个运行在CPU 1上的程序从内存地址A读取数据。由于不在CPU 1的缓存中,所以系统直接访问内存,得到值D。程序然后修改了地址A处的值,只是将它的缓存更新为新值D'。将数据写回内存比较慢,因此系统(通常)会稍后再做。假设这时操作系统中断了该程序的运行,并将其交给CPU 2,重新读取地址A的数据,由于CPU 2的缓存中并没有该数据,所以会直接从内存中读取,得到了旧值D,而不是正确的值D'。哎呀!

这一普遍的问题称为缓存一致性(cache coherence)问题,有大量的研究文献描述了解决这个问题时的微妙之处[SHW11]。这里我们会略过所有的细节,只提几个要点。选一门计算机体系结构课(或3门),你可以了解更多。

硬件提供了这个问题的基本解决方案:通过监控内存访问,硬件可以保证获得正确的数据,并保证共享内存的唯一性。在基于总线的系统中,一种方式是使用总线窥探(bus snooping)[G83]。每个缓存都通过监听链接所有缓存和内存的总线,来发现内存访问。如果CPU发现对它放在缓存中的数据的更新,会作废(invalidate)本地副本(从缓存中移除),或更新(update)它(修改为新值)。回写缓存,如上面提到的,让事情更复杂(由于对内存的写入稍后才会看到),你可以想想基本方案如何工作。

10.2 别忘了同步

既然缓存已经做了这么多工作来提供一致性,应用程序(或操作系统)还需要关心共享数据的访问吗?依然需要!本书第2部分关于并发的描述中会详细介绍。虽然这里不会详细讨论,但我们会简单介绍(或复习)下其基本思路(假设你熟悉并发相关内容)。

跨CPU访问(尤其是写入)共享数据或数据结构时,需要使用互斥原语(比如),才能保证正确性(其他方法,如使用无锁(lock-free)数据结构,很复杂,偶尔才使用。详情参见并发部分关于死锁的章节)。例如,假设多CPU并发访问一个共享队列。如果没有锁,即使有底层一致性协议,并发地从队列增加或删除元素,依然不会得到预期结果。需要用锁来保证数据结构状态更新的原子性。

为了更具体,我们设想这样的代码序列,用于删除共享链表的一个元素,如图10.3所示。假设两个CPU上的不同线程同时进入这个函数。如果线程1执行***行,会将head的当前值存入它的tmp变量。如果线程2接着也执行***行,它也会将同样的head值存入它自己的私有tmp变量(tmp在栈上分配,因此每个线程都有自己的私有存储)。因此,两个线程会尝试删除同一个链表头,而不是每个线程移除一个元素,这导致了各种问题(比如在第4行重复释放头元素,以及可能两次返回同一个数据)。

typedef struct __Node_t { 

int value; 

struct __Node_t *next; 

} Node_t; 

int List_Pop() { 

Node_t *tmp = head; // remember old head ... 

int value = head->value; // ... and its value 

head = head->next; // advance head to next pointer 

free(tmp); // free old head 

return value; // return value at head 

图10.3 简单的链表删除代码

当然,让这类函数正确工作的方法是加锁(locking)。这里只需要一个互斥锁(即pthread_mutex_t m;),然后在函数开始时调用lock(&m),在结束时调用unlock(&m),确保代码的执行如预期。我们会看到,这里依然有问题,尤其是性能方面。具体来说,随着CPU数量的增加,访问同步共享的数据结构会变得很慢。

10.3 ***一个问题:缓存亲和度

在设计多处理器调度时遇到的***一个问题,是所谓的缓存亲和度(cache affinity)。这个概念很简单:一个进程在某个CPU上运行时,会在该CPU的缓存中维护许多状态。下次该进程在相同CPU上运行时,由于缓存中的数据而执行得更快。相反,在不同的CPU上执行,会由于需要重新加载数据而很慢(好在硬件保证的缓存一致性可以保证正确执行)。因此多处理器调度应该考虑到这种缓存亲和性,并尽可能将进程保持在同一个CPU上。

10.4 单队列调度

上面介绍了一些背景,现在来讨论如何设计一个多处理器系统的调度程序。最基本的方式是简单地复用单处理器调度的基本架构,将所有需要调度的工作放入一个单独的队列中,我们称之为单队列多处理器调度(Single Queue MulTIprocessor Scheduling,SQMS)。这个方法***的优点是简单。它不需要太多修改,就可以将原有的策略用于多个CPU,选择最适合的工作来运行(例如,如果有两个CPU,它可能选择两个最合适的工作)。

然而,SQMS有几个明显的短板。***个是缺乏可扩展性(scalability)。为了保证在多CPU上正常运行,调度程序的开发者需要在代码中通过加锁(locking)来保证原子性,如上所述。在SQMS访问单个队列时(如寻找下一个运行的工作),锁确保得到正确的结果。

然而,锁可能带来巨大的性能损失,尤其是随着系统中的CPU数增加时[A91]。随着这种单个锁的争用增加,系统花费了越来越多的时间在锁的开销上,较少的时间用于系统应该完成的工作(哪天在这里加上真正的测量数据就好了)。

SQMS的第二个主要问题是缓存亲和性。比如,假设我们有5个工作(A、B、C、D、E)和4个处理器。调度队列如下:

一段时间后,假设每个工作依次执行一个时间片,然后选择另一个工作,下面是每个CPU可能的调度序列:

由于每个CPU都简单地从全局共享的队列中选取下一个工作执行,因此每个工作都不断在不同CPU之间转移,这与缓存亲和的目标背道而驰。

为了解决这个问题,大多数SQMS调度程序都引入了一些亲和度机制,尽可能让进程在同一个CPU上运行。保持一些工作的亲和度的同时,可能需要牺牲其他工作的亲和度来实现负载均衡。例如,针对同样的5个工作的调度如下:

这种调度中,A、B、C、D 这4个工作都保持在同一个CPU上,只有工作E不断地来回迁移(migrating),从而尽可能多地获得缓存亲和度。为了公平起见,之后我们可以选择不同的工作来迁移。但实现这种策略可能很复杂。

我们看到,SQMS调度方式有优势也有不足。优势是能够从单CPU调度程序很简单地发展而来,根据定义,它只有一个队列。然而,它的扩展性不好(由于同步开销有限),并且不能很好地保证缓存亲和度。

10.5 多队列调度

正是由于单队列调度程序的这些问题,有些系统使用了多队列的方案,比如每个CPU一个队列。我们称之为多队列多处理器调度(Multi-Queue Multiprocessor Scheduling,MQMS)

在MQMS中,基本调度框架包含多个调度队列,每个队列可以使用不同的调度规则,比如轮转或其他任何可能的算法。当一个工作进入系统后,系统会依照一些启发性规则(如随机或选择较空的队列)将其放入某个调度队列。这样一来,每个CPU调度之间相互独立,就避免了单队列的方式中由于数据共享及同步带来的问题。

例如,假设系统中有两个CPU(CPU 0和CPU 1)。这时一些工作进入系统:A、B、C和D。由于每个CPU都有自己的调度队列,操作系统需要决定每个工作放入哪个队列。可能像下面这样做:

根据不同队列的调度策略,每个CPU从两个工作中选择,决定谁将运行。例如,利用轮转,调度结果可能如下所示:

MQMS比SQMS有明显的优势,它天生更具有可扩展性。队列的数量会随着CPU的增加而增加,因此锁和缓存争用的开销不是大问题。此外,MQMS天生具有良好的缓存亲和度。所有工作都保持在固定的CPU上,因而可以很好地利用缓存数据。

但是,如果稍加注意,你可能会发现有一个新问题(这在多队列的方法中是根本的),即负载不均(load imbalance)。假定和上面设定一样(4个工作,2个CPU),但假设一个工作(如C)这时执行完毕。现在调度队列如下:

如果对系统中每个队列都执行轮转调度策略,会获得如下调度结果:

从图中可以看出,A获得了B和D两倍的CPU时间,这不是期望的结果。更糟的是,假设A和C都执行完毕,系统中只有B和D。调度队列看起来如下:

因此CPU使用时间线看起来令人难过:

所以可怜的多队列多处理器调度程序应该怎么办呢?怎样才能克服潜伏的负载不均问题,打败邪恶的……霸天虎军团[1]

如何才能不要问这些与这本好书几乎无关的问题?

关键问题:如何应对负载不均

多队列多处理器调度程序应该如何处理负载不均问题,从而更好地实现预期的调度目标?

最明显的答案是让工作移动,这种技术我们称为迁移(migration)。通过工作的跨CPU迁移,可以真正实现负载均衡。

来看两个例子就更清楚了。同样,有一个CPU空闲,另一个CPU有一些工作。

在这种情况下,期望的迁移很容易理解:操作系统应该将B或D迁移到CPU0。这次工作迁移导致负载均衡,皆大欢喜。

更棘手的情况是较早一些的例子,A独自留在CPU 0上,B和D在CPU 1上交替运行。

在这种情况下,单次迁移并不能解决问题。应该怎么做呢?答案是不断地迁移一个或多个工作。一种可能的解决方案是不断切换工作,如下面的时间线所示。可以看到,开始的时候A独享CPU 0,B和D在CPU 1。一些时间片后,B迁移到CPU 0与A竞争,D则独享CPU 1一段时间。这样就实现了负载均衡。

当然,还有其他不同的迁移模式。但现在是最棘手的部分:系统如何决定发起这样的迁移?

一个基本的方法是采用一种技术,名为工作窃取(work stealing)[FLR98]。通过这种方法,工作量较少的(源)队列不定期地“偷看”其他(目标)队列是不是比自己的工作多。如果目标队列比源队列(显著地)更满,就从目标队列“窃取”一个或多个工作,实现负载均衡。

当然,这种方法也有让人抓狂的地方——如果太频繁地检查其他队列,就会带来较高的开销,可扩展性不好,而这是多队列调度最初的全部目标!相反,如果检查间隔太长,又可能会带来严重的负载不均。找到合适的阈值仍然是黑魔法,这在系统策略设计中很常见。

10.6 Linux 多处理器调度

有趣的是,在构建多处理器调度程序方面,Linux社区一直没有达成共识。一直以来,存在3种不同的调度程序:O(1)调度程序、完全公平调度程序(CFS)以及BF调度程序(BFS)[2]。从Meehean的论文中可以找到对这些不同调度程序优缺点的对比总结[M11]。这里我们只总结一些基本知识。

O(1) CFS采用多队列,而BFS采用单队列,这说明两种方法都可以成功。当然它们之间还有很多不同的细节。例如,O(1)调度程序是基于优先级的(类似于之前介绍的MLFQ),随时间推移改变进程的优先级,然后调度***优先级进程,来实现各种调度目标。交互性得到了特别关注。与之不同,CFS是确定的比例调度方法(类似之前介绍的步长调度)。BFS作为三个算法中唯一采用单队列的算法,也基于比例调度,但采用了更复杂的方案,称为最早最合适虚拟截止时间优先算法(EEVEF)[SA96]读者可以自己去了解这些现代操作系统的调度算法,现在应该能够理解它们的工作原理了!

10.7 小结

本章介绍了多处理器调度的不同方法。其中单队列的方式(SQMS)比较容易构建,负载均衡较好,但在扩展性和缓存亲和度方面有着固有的缺陷。多队列的方式(MQMS)有很好的扩展性和缓存亲和度,但实现负载均衡却很困难,也更复杂。无论采用哪种方式,都没有简单的答案:构建一个通用的调度程序仍是一项令人生畏的任务,因为即使很小的代码变动,也有可能导致巨大的行为差异。除非很清楚自己在做什么,或者有人付你很多钱,否则别干这种事。

参考资料

[A90]“The Performance of Spin Lock Alternatives for Shared-Memory Multiprocessors”Thomas E. Anderson

IEEE TPDS Volume 1:1, January 1990

这是一篇关于不同加锁方案扩展性好坏的经典论文。Tom Anderson是非常著名的系统和网络研究者,也是一本非常好的操作系统教科书的作者。

[B+10]“An Analysis of Linux Scalability to Many Cores Abstract”

Silas Boyd-Wickizer, Austin T. Clements, Yandong Mao, Aleksey Pesterev, M. Frans Kaashoek, Robert Morris, Nickolai Zeldovich

OSDI ’10, Vancouver, Canada, October 2010

关于将Linux扩展到多核的很好的现代论文。

[CSG99]“Parallel Computer Architecture: A Hardware/Software Approach”David E. Culler, Jaswinder Pal Singh, and Anoop Gupta

Morgan Kaufmann, 1999

其中充满了并行机器和算法细节的宝藏。正如Mark Hill幽默地在书的护封上说的——这本书所包含的信息比大多数研究论文都多。

[FLR98]“The Implementation of the Cilk-5 Multithreaded Language”Matteo Frigo, Charles E. Leiserson, Keith Randall

PLDI ’98, Montreal, Canada, June 1998

Cilk是用于编写并行程序的轻量级语言和运行库,并且是工作窃取范式的极好例子。

[G83]“Using Cache Memory To Reduce Processor-Memory Traffic”James R. Goodman

ISCA ’83, Stockholm, Sweden, June 1983

关于如何使用总线监听,即关注总线上看到的请求,构建高速缓存一致性协议的开创性论文。Goodman在威斯康星的多年研究工作充满了智慧,这只是一个例子。

[M11]“Towards Transparent CPU Scheduling”Joseph T. Meehean

Doctoral Dissertation at University of Wisconsin—Madison, 2011

一篇涵盖了现代Linux多处理器调度如何工作的许多细节的论文。非常棒!但是,作为Joe的联合导师,我们可能在这里有点偏心。

[SHW11]“A Primer on Memory Consistency and Cache Coherence”Daniel J. Sorin, Mark D. Hill, and David A. Wood

Synthesis Lectures in Computer Architecture

Morgan and Claypool Publishers, May 2011

内存一致性和多处理器缓存的权威概述。对于喜欢对该主题深入了解的人来说,这是必读物。

[SA96]“Earliest Eligible Virtual Deadline First: A Flexible and Accurate Mechanism for Pro- portional Share Resource Allocation”

Ion Stoica and Hussein Abdel-Wahab

Technical Report TR-95-22, Old Dominion University, 1996

来自Ion Stoica的一份技术报告,其中介绍了很酷的调度思想。他现在是U.C.

伯克利大学的教授,也是网络、分布式系统和其他许多方面的***专家。

[1] 一个鲜为人知的事实是,变形金刚的家乡塞伯坦星球被糟糕的CPU调度决策所摧毁。

[2] 自己去查BF代表什么。预先警告,小心脏可能受不了。

本文摘自刚刚上架不久的《操作系统导论》

操作系统导论

作者:[美] 雷姆兹·H.阿帕希杜塞尔( Remzi H. Arpaci-Dusseau), [美]安德莉亚·C.阿帕希杜塞尔(Andrea C. Arpaci-Dusseau)

译者:王海鹏

下载发烧友APP

打造属于您的人脉电子圈

关注电子发烧友微信

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

关注发烧友课堂

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

电子发烧友观察

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

评论

相关推荐

《计算机体系结构》硬件篇3 之 CPU组成

点击右方"佳嵌"图标,可以看所有课程。我们将《嵌入式工程师-系列课程》分成两大阶段:第一阶段:《计算机体系结构》课程&n
发烧友学院发表于 2018-12-07 00:00 2334次阅读
《计算机体系结构》硬件篇3 之 CPU组成

流处理器的作用_流处理器的原理

流处理器这个名词第一次出现在人们的视线中还要上溯到2006年12月4日, NVIDIA在当天正式对外....
发表于 2020-05-31 09:35 58次阅读
流处理器的作用_流处理器的原理

处理器i5和i7的四大区别

在着手购买一台适合自己的笔记本之前,了解相关的科普知识有着至关重要的意义。关于笔记本,我们主要了解电....
发表于 2020-05-31 09:31 149次阅读
处理器i5和i7的四大区别

AI芯片行业到底是不是泡沫寒潮

从跑出实验室到在各行业落地,人工智能的产业链正在不断完善。一方面,算法公司已不再局限于只做软件,开始....
发表于 2020-05-30 11:17 1152次阅读
AI芯片行业到底是不是泡沫寒潮

亮亮视野发布全新超短焦AR光学模组,工艺拆分细化...

AR与VR是近年来广受关注的科技领域,它们的近眼显示系统都是将显示器上的像素, 通过一系列光学成像元....
发表于 2020-05-30 09:58 67次阅读
亮亮视野发布全新超短焦AR光学模组,工艺拆分细化...

支持高级语音命令和人脸识别应用的NXP i.MX...

NXP Semiconductors的i.MX RT106L和i.MX RT106F跨界处理器是两款....
发表于 2020-05-29 15:18 630次阅读
支持高级语音命令和人脸识别应用的NXP i.MX...

F28377d单CPU1运行的cmd文件,如何改成CPU1和CPU2同时运行需要的cmd文件

如题目前F28377d例程里sys/bios的cmd文件,只针单CPU1运行,文件如下: MEMORY [ PAGE 0 : /* Prog...
发表于 2020-05-29 13:16 69次阅读
F28377d单CPU1运行的cmd文件,如何改成CPU1和CPU2同时运行需要的cmd文件

28377D的双核例程工程怎么验证

1.比如说GPIO_TOGGLE的例程,文件夹下面有两个工程,是要把两个例程都下载进去才能验证吗? 2.假如运行两个...
发表于 2020-05-29 13:07 89次阅读
28377D的双核例程工程怎么验证

Qualcomm QCC1110为智能手表提供丰...

Qualcomm Snapdragon Wear 3100平台基于超低功耗架构设计,并且引入全新协处....
发表于 2020-05-29 10:43 526次阅读
Qualcomm QCC1110为智能手表提供丰...

什么是流处理器_流处理器有什么作用

流处理器这个名词第一次出现在人们的视线中还要上溯到2006年12月4日, NVIDIA在当天正式对外....
发表于 2020-05-29 09:39 120次阅读
什么是流处理器_流处理器有什么作用

海思四核处理器怎么样

用过华为手机的人相信对于海思四核处理器应该不陌生,在目前华为智能手机上经常可以看到海思四核处理器的身....
发表于 2020-05-29 09:31 131次阅读
海思四核处理器怎么样

ucos2任务调度问题如何解决

我是一个初学者,现有一个问题有疑问,在一个任务里必需调用延时OSTimeDlyHMSM(0, 0, 0, 1)来进行任务调度吗?...
发表于 2020-05-29 09:15 21次阅读
ucos2任务调度问题如何解决

28377内部温度,如果通过AD采样,怎么转换为实际温度?

377中CPU内部温度可以通过AD读取,如何转换为实际温度呢? 8.3.4 Internal Temperature Sensor The intern...
发表于 2020-05-29 08:52 24次阅读
28377内部温度,如果通过AD采样,怎么转换为实际温度?

贸泽电子宣布即日起分销基于Xilinx的工业级S...

贸泽供应的Trenz Electronic TE0803 MPSoC SoM集成了 Xilinx Z....
发表于 2020-05-28 14:27 159次阅读
贸泽电子宣布即日起分销基于Xilinx的工业级S...

如何在Virtex-II Pro上实现仲裁器

嗨,我的名字是Shamanth,这是我在这些论坛上的第一篇文章。我有一个循环仲裁器的verilog / vhdl代码。 它被设计为在...
发表于 2020-05-28 12:37 41次阅读
如何在Virtex-II Pro上实现仲裁器

Arm即将推出新一代的旗舰CPU、GPU和NPU

Arm宣布推出用于旗舰型手机的新款处理器IP系列:Cortex-X1 CPU,Cortex-A78 ....
发表于 2020-05-28 11:21 955次阅读
Arm即将推出新一代的旗舰CPU、GPU和NPU

处理器型号和性能的查看方法

现在处理器生产厂家都是根据处理器的市场定位来属于同一系列的处理器产品是一个系列型号的,这样可以方便分....
发表于 2020-05-28 09:16 177次阅读
处理器型号和性能的查看方法

静电水处理器的工作原理和特点

静电水处理器是一种水处理器,安装简单,具有除垢和杀菌,运行可靠等功能。因此,受到了广大企业用户的青睐....
发表于 2020-05-28 09:11 142次阅读
静电水处理器的工作原理和特点

笔记本处理器的温度多少算正常

笔记本处理器温度多少正常?笔记本处理器不比台式电脑上的处理器,性能没有那么好,在散热上也差上许多,但....
发表于 2020-05-28 09:09 177次阅读
笔记本处理器的温度多少算正常

处理器之间是怎么区分的

很多小伙伴对赛扬、奔腾、酷睿i3、i5、i7,以及Ryzen3、5、7都耳熟能详,也大概知道处理器之....
发表于 2020-05-27 09:49 166次阅读
处理器之间是怎么区分的

笔记本处理器后缀代表什么

购买自己的笔记本电脑,这个时候在选择的时候就需要注意看参数,笔记本处理器的后缀HQ、M、U、Y等都是....
发表于 2020-05-27 09:44 188次阅读
笔记本处理器后缀代表什么

芯片是TMS320C6416TGLZA8,那上电复位后CPU时钟频率为850Mhz,还是CLKIN输入时钟频率?

你好,我使用的芯片是TMS320C6416TGLZA8,该芯片上电复位后CPU时钟频率为850Mhz,还是CLKIN输入时钟...
发表于 2020-05-27 09:06 41次阅读
芯片是TMS320C6416TGLZA8,那上电复位后CPU时钟频率为850Mhz,还是CLKIN输入时钟频率?

LED显示屏的常见问题和解决方法

随着社会的不断发展,在我们生活中到处都能看的见LED显示屏,各式各样的LED显示屏产品也被应用在市场....
发表于 2020-05-26 10:13 105次阅读
LED显示屏的常见问题和解决方法

处理器温度过高的原因及处理方法

我们知道处理器就是电脑的核心,一旦出问题了就严重了,所以我们要保护好它。但是我们又知道其实电脑处理器....
发表于 2020-05-26 10:00 150次阅读
处理器温度过高的原因及处理方法

如何选择CPU处理器

处理器,中央处理器,一台电脑的大脑,可想而知,处理器对于电脑是多么重要。性能强的处理器可以更快地处理....
发表于 2020-05-26 09:56 247次阅读
如何选择CPU处理器

笔记本电脑处理器i7和i5的分别是什么

处理器作为一台电脑的核心,笔记本处理器插槽的规划几乎全是焊接式的,不一样于台式电脑,感觉处理器不行了....
发表于 2020-05-26 09:50 203次阅读
笔记本电脑处理器i7和i5的分别是什么

C6748的UPP口完成接收和发射数据后,无法进入其中断服务程序是怎么回事

使用UPP的B口,向外面发送64bytes,同时也使用A口接收64bytes的数据,发送的数据可以在逻辑分析仪中看到64bytes,...
发表于 2020-05-25 14:02 39次阅读
C6748的UPP口完成接收和发射数据后,无法进入其中断服务程序是怎么回事

电脑处理器不发热如何处理

电脑处理器是一个核心部件,如果电脑处理器出现问题就会造成瘫痪状态,关于这个问题,小编针对电脑处理器问....
发表于 2020-05-25 09:55 168次阅读
电脑处理器不发热如何处理

处理器损坏的原因是什么

电脑中央处理器(处理器)是一块超大规模的集成电路,是一台电脑不可或缺的核心配置,但让有些朋友抓狂的是....
发表于 2020-05-25 09:53 133次阅读
处理器损坏的原因是什么

东莞兆科教你:导热膏操作的实用小技巧

能够运用到多种领域的导热膏,是帮助CPU降温的法宝,不管是高性能的计算机CPU,还是声卡、显卡,甚者....
发表于 2020-05-25 09:52 78次阅读
东莞兆科教你:导热膏操作的实用小技巧

手机的处理器和内存哪个更重要

如何选购手机 ?处理器和内存哪个更重要?原则上来讲,手机的每个部件都很重要,都是相辅相成的,离开谁都....
发表于 2020-05-25 09:50 135次阅读
手机的处理器和内存哪个更重要

2020年不按常理出牌,却是国产芯片最好的时机?...

电子发烧友网报道(文/黄晶晶)2020年是不按常理出牌的一年。新冠疫情在全球的蔓延、美国进一步出台限....
发表于 2020-05-25 09:25 3699次阅读
2020年不按常理出牌,却是国产芯片最好的时机?...

CPU_Init在A盘扩展程序中是怎样定义的?

如图:,但是在A盘扩展程序中为什么是OSInit()先定义? 请大佬们解惑!!!...
发表于 2020-05-25 01:03 30次阅读
CPU_Init在A盘扩展程序中是怎样定义的?

处理器和显卡如何选择

我们买电脑的时候不管是真懂还是假懂,就算是小白也会问一句处理器是什么,这个时候就算是商家说了一连串根....
发表于 2020-05-23 09:41 233次阅读
处理器和显卡如何选择

处理器超频和睿频的区别是什么

在Intel的处理器参数中,我们经常会看到默认 主频 、 睿频 、 超频 等参数。不过提到睿频,不少....
发表于 2020-05-23 09:35 188次阅读
处理器超频和睿频的区别是什么

在6748中用for循环为40000个数组赋值对DSP的cpu消耗是不是特别大

   我在6748中用for循环为40000个数组赋值对DSP的cpu消耗是不是特别大...
发表于 2020-05-22 12:36 54次阅读
在6748中用for循环为40000个数组赋值对DSP的cpu消耗是不是特别大

骁龙712处理器怎么样_骁龙712处理器对比骁龙...

骁龙712处理器发布于2019年年初,如realme Q、vivo Z5等机型都搭载骁龙712处理器....
发表于 2020-05-22 09:13 837次阅读
骁龙712处理器怎么样_骁龙712处理器对比骁龙...

i7和i9的处理器有什么区别

以i9-9900K和i7-9700K两款产品为例,i9主要拥有更高的频率,支持16线程的超线程,还拥....
发表于 2020-05-22 09:08 587次阅读
i7和i9的处理器有什么区别

在多任务系统中,会不会只有优先级最靠前的两个任务反复运行

UCOSII的任务是无限循环,在循环的适当位置加入OSTimeDly()函数,可以让当前任务延时,进行一次任务调度,以...
发表于 2020-05-22 06:12 33次阅读
在多任务系统中,会不会只有优先级最靠前的两个任务反复运行

夯实“新办公”根基,AMD EPYC以硬实力挑战...

从移动互联网时代兴起的BYOD(Bring Your Own Device,指携带自己的设备办公),....
发表于 2020-05-21 15:18 972次阅读
夯实“新办公”根基,AMD EPYC以硬实力挑战...

电脑cpu的拆卸步骤

大家只知道电脑的重要组成部分有哪些,它们各自的作用是什么以及简单的拆卸组装,那么电脑cpu怎么拆呢?....
发表于 2020-05-21 09:37 208次阅读
电脑cpu的拆卸步骤

电脑cpu占用过高怎么解决

当出现cpu占用过高的时候,我们在操作电脑的时候会非常不适,感觉电脑快要报废一样。那么,cpu占用过....
发表于 2020-05-21 09:31 296次阅读
电脑cpu占用过高怎么解决

电脑cpu容易坏的原因有哪些

处理器虽是电脑最不可或缺的核心硬件,但大家是不是最少听到的就是处理器破坏掉,今天小编将围绕什么原因导....
发表于 2020-05-21 09:28 178次阅读
电脑cpu容易坏的原因有哪些

如何挑选CPU的散热器

高温天气,不仅让人热得浑身没劲,就连电脑也动不动就烫得厉害,这该如何是好呢?有点电脑基本知识的朋友都....
发表于 2020-05-20 09:29 221次阅读
如何挑选CPU的散热器

关于选择处理器的八个认知错误

 我们购买电脑,往往会关心处理器的性能好坏,处理器的性能好坏直接影响了电脑的运算速度,我们可以将处理....
发表于 2020-05-20 09:23 204次阅读
关于选择处理器的八个认知错误

电脑的CPU如何进行更换

同行描述说是有可能CPU挂了,让给维修试试,打值没问题直接上电,可以触发到0.4A,没过内存,测量没....
发表于 2020-05-20 09:21 382次阅读
电脑的CPU如何进行更换

常见的三种CPU封装技术

LGA全称为“LandGridArray”,及“栅格阵列封装”。被英特尔广泛的应用于自家的桌面级处理....
发表于 2020-05-19 11:13 131次阅读
常见的三种CPU封装技术

组装电脑的cpu如何选择

CPU作为电脑思考的大脑,决定了整台电脑的运算性能高低,但是用户却不一定懂得如何选择CPU,什么型号....
发表于 2020-05-19 09:27 214次阅读
组装电脑的cpu如何选择

CPU缓存是什么意思_CPU缓存有什么作用

由于处理器是核心硬件,相信我们在选择处理器的时候都会去关心处理器参数方面,而在处理器核心参数中,我们....
发表于 2020-05-19 09:24 168次阅读
CPU缓存是什么意思_CPU缓存有什么作用

CPU风扇转速变慢怎么解决

电脑随着使用次数增加吗,你会发现CPU风扇转速会变慢,CPU风扇转速会变慢的话可能会导致电脑的散热不....
发表于 2020-05-19 09:22 151次阅读
CPU风扇转速变慢怎么解决

联发科推出全新5G SoC处理器天玑820,独家...

5月18日下午,联发科正式发布了定位主流市场的全新5G SoC处理器“天玑820”,这也是继天玑10....
发表于 2020-05-18 17:16 746次阅读
联发科推出全新5G SoC处理器天玑820,独家...

安兔兔Android手机处理器天梯榜发布,天玑8...

2020 年 5 月 18日 ,联发科正式发布天玑系列5G SoC新品--天玑820 。天玑820采....
发表于 2020-05-18 17:07 1503次阅读
安兔兔Android手机处理器天梯榜发布,天玑8...

CPU和显卡到底哪个更重要

 随着个人装机越来越流行,很多人都喜欢自己组装一台电脑来使用。而对于设计行业或者游戏玩家来说,CPU....
发表于 2020-05-18 10:00 782次阅读
CPU和显卡到底哪个更重要

cpu温度过高的解决方法

有时候电脑在长时间使用之后有可能出现CPU过热的现象,cpu温度过高怎么办,下面就为大家介绍一下解决....
发表于 2020-05-18 09:59 302次阅读
cpu温度过高的解决方法

cpu频率高低有什么影响

很多人在购置电脑的时候都什么关注cpu的频率高低,那么cpu的频率高低究竟对电脑有什么影响呢?下面就....
发表于 2020-05-18 09:57 163次阅读
cpu频率高低有什么影响

EZ-USB处理器的配置特性、接口设备开发方法与...

设备驱动程序提供用户访问设备的接口。开发系统提供厂家的通用设备驱动程序。用户也可以用相关驱动程序开发....
发表于 2020-05-18 09:54 99次阅读
EZ-USB处理器的配置特性、接口设备开发方法与...

基于虚拟仪器实现模块化测试系统的设计,如何满足理...

设备的日趋复杂和技术的渐进融合迫使测试系统变得更加灵活。尽管成本的压力要求系统具有更长的生命周期,测....
发表于 2020-05-18 09:20 135次阅读
基于虚拟仪器实现模块化测试系统的设计,如何满足理...

cpu如何选择

CPU是一个电脑的核心零件,在组装电脑的时候,选购CPU尤其重要,那么cpu怎么选?下面以台式机为例....
发表于 2020-05-17 09:50 290次阅读
cpu如何选择
博评网