`

程序级线程和硬件级线程不同

阅读更多

因为在远程控制的图片传输中遇到一个瓶颈:增加服务器端抓取和发送屏幕图片的线程数,并没有提高一秒的图片传送的帧数。所以,看了CPU的工作原理和程序设计中线程机制这两个方面东西,主要是在网上看的。

 

总结了很多,不过我只把容易误解和理解错的部分贴出来

 

1、关于java多线程降低CPU运行效率的问题:如果CPU的运行涉及非CPU使用的事件(如网络、部分I/O等),使

用多线程将提高CPU的利用效率。而如果CPU的运行都是关于CPU使用的事件,同时CPU的使用已经达到100%,就

只能降低整个程序的执行效率。

 

2、主频就是CPU时钟频率。主频代表数字脉冲脉冲信号震荡的速度。主频一定程度上取决于流水线级数,跟处

理指令的速度有关系,但主频并不是每秒执行指令数。指令周期包含若干CPU周期,而CPU周期又包含若干时钟

周期,所以指令周期和时钟周期是两回事,并且不存在正比关系。

 

3、提高CPU的运算速度:可以通过多CPU、多核、多线程、增加流水线线的级数等等级数来实现。主频可以再提

高,不过也会因为制作工艺和研发的架构限制。不过主频太高并没有什么意义了,因为主频过高,流水线中的

电子单元运行错了,要重新整个指令的执行流程,会是CPU执行效率降低。

 

4、当软件的CPU利用率达到100%,再增加线程数已经没有任何用处。此时,只能通过增加硬件级的线程数来实

现。具体做法是用多核、SMT(同步多线程)、粗粒度的多线程技术来提高CPU的速度。
HT(超线程)属于SMT中一个分支。这个技术会是将来CPU提高性能的一个突破点。

 

5、为什么线程作为轻量级进程上下文切换时速度更加快:线程本身的数据通常只有寄存器数据,以及一个程序

执行时使用的堆栈。

 

 

P:因为本人是初学者,所以有错误还请各位高人指正谢谢~~

分享到:
评论

相关推荐

    c#程序多线程

    线程硬件支持的目标,即支持快速进行就绪态线程、执行态线程间的切换。为达成这个目标,需要硬件实现保存、恢复程序看得见的寄存器以及一些对程序执行有影响的控制寄存器(如程序计数器PC、程序状态寄存器SR)。从一...

    轻量级线程库protothreads介绍

    每个Protothreads线程仅增加10行代码和2字节RAM的额外硬件资源消耗。对于资源紧缺而不能移植嵌入式操作系统的嵌入式系统,使用Protothreads能够方便直观地设计多任务程序,能够实现用线性程序结构处理事件驱动型程序...

    多核程序设计技术 通过软件多线程提升性能

    作者都是长期供职于Intel公司的资深软件工程师和结构师,书中融入了他们自己丰富的软硬件开发经验,可以为面向多核体系结构进行并行程序设计的开发人员提供巨大的帮助。不论对从未接触过并行程序设计的开发人员,...

    C#控制台多线程例程

    多线程(英语:multithreading),是指从软件或者硬件...在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理(Multithreading)”。这里提供简单的多线程例程便于移植。

    多线程介绍

    [1] 在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理(Multithreading)”。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程(台湾译作...

    实验二、嵌入式Linux多线程编程实验

    2. 利用信号量的PV操作完成完成以下单个生产者和单个消费者模型的代码。 3. 编写在Ubuntu中编译执行的makefile文件,然后在Ubuntu中执行。 4. 编写在实验箱中编译执行的makefile文件,然后在实验箱中执行。注意...

    Java并发编程和多线程的区别

    多线程是一种计算机编程技术,它涉及到在一个程序中创建和管理多个线程,每个线程都可以独立执行不同的任务或代码段。多线程允许程序同时执行多个任务,可以是并发执行或并行执行,具体取决于硬件和操作系统的支持...

    多线程基础设计

    在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理(Multithreading)”。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程(台湾译作“执行...

    基于嵌入式的多线程TCP服务端程序

    硬件平台为 iTop-4412,此程序是运行在嵌入式linux系统上的TCP/IP 服务端程序,主函数用于建立和客户端的连接,建立完成后,会新增一个线程用于实时数据传输。

    论文研究-基于硬件多线程网络处理器功耗可控无线局域网MAC协议实现.pdf

    实验结果证明, 异构多线程结构程序在实时性任务时五个软件线程需四个硬件线程支持, 而无实时性任务只需两个硬件线程支持。提出的多线程MAC层协议编程模型能够达到根据网络负载特征动态控制处理器性能的目的。

    C#多线程与异步的区别详解

    随着拥有多个硬线程 CPU(超线程、双核)的普及,多线程和异步操作等并发程序设计方法也受到了更多的关注和讨论。本文主要是想与各位高手一同探讨一下如何使用并发来最大化程序的性能。 多线程和异步操作的异同 多...

    python高级Linux|tcp|线程

    因为 Minix 只是教学使用,因此功能并不强,林纳斯 经常要用他的终端 仿真器(Terminal Emulator) 去访问大学主机上的新闻组和邮件,为了方便读写和下载文件,他自己编写了磁盘驱动程序和文件系统,这些在后来成为...

    多任务和多线程技术的研究

    基本上,操作系统使用一个硬件时钟为同时执行的每个程序配置「时间片段」。如果时间片段够小,并且机器也没有由于太多的程序而超出负荷时,那么在使用者看来,所有的这些程序似乎在同时执行着;多线程是在一个程序...

    MYSQL.rar_SQL分线程_SQL多线程_key5ad_mysql是多线程_replacer4s

    MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成。 SQL是一种标准化的语言,它使得存储、更新和存取信息更容易。例如,你能用SQL语言为一个网站检索产品信息及...

    用多线程做自动机程序

    //终止三个辅助线程 g_MotionMsg.MoveState = 0; //停止状态 g_MotionMsg.MoveMode = 0; //自然模式 // g_MotionMsg.AddTime = CurTime; //附加上以前加工的时间 if( !b...

    嵌入式多线程

    硬件课程设计 多线程嵌入式处理 程序+文档

    Android高级编程--源代码

    3.6.4 为不同的语言和硬件创建资源 61 3.6.5 运行时配置更改 62 3.7 深入探讨Android活动 63 3.7.1 创建一个活动 63 3.7.2 活动生命周期 65 3.7.3 Android活动类 70 3.8 小结 70 第4章 创建用户界面 73 4.1 ...

    C#多线程与Socket编程DEMO

    在程序设计中,涉及数据存储和数据交换的时候,不管是B/S还是C/S模式 ,都有这样一个概念:数据库服务器。这要求一台性能和配置都比较好的主机作为服务器, 以满足数目众多的客户端进行频繁访问。但是对于一些数据...

    线程进程程序的区别 硬件工程师电路分析物联网模电单片机嵌入式技术.doc

    电路 硬件工程师 单片机 通信技术 相关技术文档

    cuda程序设计讲解及实例讲解

    本ppt详细介绍了cuda的基本理论以及cuda的编程模型,多线程和硬件结构,并通过几个案例讲解了cuda的基本应用。

Global site tag (gtag.js) - Google Analytics