计算机科学的研究,不仅应该涵盖计算处理所基于的原理,还因该反映这些领域目前的知识状态。当今,计算机技术要求来自计算机科学所有分支的专业人员理解计算机处理的基础的关键,在于知道软件和硬件在所有层面上的交互。

直到现在,程序员可以依赖于硬件设计者,编译器和芯片厂商,来使他们的软件程序运行更快或者更有效,而无须改变他们的程序。但是,在实际中,如果一个程序运行的更快,它肯定是一个并行程序。尽管很多研究者的目标是保证程序员在编写他们的程序的时,无需注意硬件的并行特征,但是,要实现这一点,还将需要很多年的时间才有可能。所以在现在,程序员需完全的理解硬件和软件之间的联系,以使他们的程序可以在现代计算机结构中有效地运行。

在计算机编程中,解决一个规模较大的问题的典型方式是,将这个问题分成更小的以及独立的部分,以便同时解决所有问题。并行编程,恰恰倾向于使用这种方式,通过使用多个处理器核进行同时工作,来完成一个共同的任务。每个处理器核解决这个问题的一部分(独立的部分)。此外,在处理器核计算的过程中,数据信息的交互将会在它们之间发生,这样就会涉及到,这么一个问题,对数据信息读取的先后,即如何解决内存访问冲突的问题,当然,这也跟计算机体系结构有所关系,这将在后续内容中进行总结和分析。

现今,很多软件应用都要求更强的计算能力,一种方式来实现这个目标是增强每个处理器核的运行速度或者去增强每片芯片的处理器核数目。但是,这种方式会带来以下的负面影响,例如,提高处理器的运行速度会产生额外的热能损耗,因此性能的提升会带来一瓦特甚至更多的能量损耗,这就对设备的冷却性能有所要求;而增强处理器核的数目看起来是一种很好的选择,因为能量损耗和耗散受到限制,但是,性能却没有显著的提升。

为了解决这个问题,现在的计算机硬件厂商都采取一种多核架构。而采取并行编程,很好的利用这种架构设计,可以使可用计算资源得以充分利用。

最新文章

  1. Java开发常用的在线工具
  2. AJAX需要注意的
  3. FZU-2075 Substring(后缀数组)
  4. nohup输入密码后继续后台运行
  5. 编写高质量代码改善C#程序的157个建议读书笔记【1-10】
  6. http://bootswatch.com/
  7. JavaWeb项目开发案例精粹-第4章博客网站系统-002辅助类及配置文件
  8. [Lua]cocos framework
  9. Spring.net 学习IOC------通过构造器注入
  10. Hibernate框架学习之注解映射实体类
  11. SCOI 2010 序列操作
  12. SSE推送数据
  13. codeForces 472D 最小生成树
  14. ElasticSearch-6.3.2 linux 安装
  15. linux CentOS
  16. 使用FFmpeg解码并用swscale将YUV转为RGB
  17. 17-(基础入门篇)GPRS(Air202)串口
  18. PHP 操作redis 封装的类 转的
  19. JavaScript 之call , apply 和prototype 介绍
  20. How to Configure Eclipse for Python --- 在eclipse中如何配置pydev

热门文章

  1. Wacom发布Cintiq Companion 2
  2. centos7.2 apache开启.htaccess
  3. Unicode和UTF-8
  4. [2017BUAA软工]第三次博客作业:案例分析
  5. arp请求与回复
  6. Hadoop HDFS环境搭建
  7. 最简单的Linux下apache+mysql+php安装
  8. Hibernate学习--hibernate延迟加载原理-动态代理(阿里电面)
  9. HDU4753 Fishhead’s Little Game——2013 ACM/ICPC Asia Regional Nanjing Online
  10. Java虚拟机的内存管理