设为首页 加入收藏

TOP

1.3.1 基本的处理器体系结构
2013-10-07 12:57:34 来源: 作者: 【 】 浏览:85
Tags:1.3.1 基本 处理器 体系结构

1.3.1  基本的处理器体系结构

您可以访问和影响的部件包括寄存器、主存储器、虚拟内存、指令集使用以及目标代码优化。在试图与多处理器体系结构打交道之前,理解在单处理器架构中可以影响哪些部件非常重要。图1-2给出了简化的处理器架构和内存部件的逻辑概览。

 
(点击查看大图)图1-2

处理器架构有很多变体,图1-2只是一个逻辑概览。它说明了您可以使用的主要处理器部件。尽管这个级别的细节和这些部件对特定类型的应用程序开发经常是透明的,但是它们在自底向上多核编程(www.cppentry.com)和以加速和性能优化为主要目的的软件开发中都发挥着核心作用。与处理器的主要接口是编译器。操作系统是二级接口。

注意:

在本书中,我们将使用C++(www.cppentry.com)编译器来生成目标代码。并行编程(www.cppentry.com)可用于使用多种方法的所有类型的应用程序,从低级到高级,从面向对象到结构化应用程序。C++(www.cppentry.com)支持多范型编程(www.cppentry.com)方法,因为其拥有较强灵活性,所以我们会选择使用它。

表1-1给出了编译器与CPU和指令集交互的类别清单。包括浮点类别、寄存器操纵类别和内存模型类别。

表1-1

编译器开关选项< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

   

使用的示例

Vectorization

这个选项将激活vectorizer

它是编译器中的一个组件,

自动在MMX寄存器中

使用单指令多数据(Single

Instruction Multiple Data

SIMD)指令以及所有SSE指令集

-x     -ax

激活vectorizer

Auto parallelization

这个选项识别包含并行

性的循环结构,然后

(如果可能)安全生成并

行执行的多线程等价体

-parallel

触发自动并行化

Parallelization

with OpenMP

使用这个选项,编译器基

于程序员在源码中加入

OpenMP指示来生

成多线程代码

#pragma omp parallel

{

#pragma omp for

//your code

}

Fast

这个选项用于检测不

兼容的处理器,在执行

中生成错误消息

-O1

为代码规模和代码局

部性进行优化,并禁

用循环展开、软件流水

和全局代码调度

-O2

默认值,将软件流水置为ON

Floating point

允许编译器影响对浮

点指令的选择和使用的一组开关

-fschedule-insns

告诉编译器可以发送

其他指令,直到要求

一个浮点指令的结果为止

-float-store

告诉编译器在生成目标

代码时不使用在

寄存器中存放浮点变量的指令

(续表)

编译器开关选项

   

使

Loop unrolling

这个选项用于激活循

环展开;它只应用于

编译器被确定为应当

被展开的循环;如果

n省略,则由编译

器决定是否进行展开

-unroll<n>

激活循环展开,<n>

置循环展开的最大次数

n=0

禁用循环展开,仅为64

位架构下的容许值

Memory bandwidth

这个选项用于激活或禁

用对处理器使用的内存

带宽的控制;如果禁用,

则带宽会在多个线程

间完全共享;可以和

auto parallelization

项一同使用;这个选

项仅用于64位架构

-opt-mem-bandwidth<n>

n=2

为并行代码(pthreads

MPI代码)激活编译器优化

n=1

为编译器生成的多线程

代码激活编译器优化

Code generation

使用这个选项代码,

为特定架构或处理器

进行代码优化;如果

有性能收益,编译器

生成多条、处理器特

定的代码路径;用于

32位及64位架构

-ax<processor>

为指定处理器生成优化代码

-axS

使用SIMD Extensions 4(SSE4)

向量编译器和媒体加速器

指令生成专门的代码路径

Thread checking

这个选项激活使用线

程的应用程序或程

序中的线程分析,

只能和Intel

Thread Checker

具一同使用

-tcheck

激活使用线程的应用程序

或程序的分析

Thread library

这个选项使得编译

器包含来自Thread

Library的代码;程

序员需要在源代码中包含API调用

-pthread

针对多线程支持使用pthread


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.5.3 多核应用程序的设计与实现 下一篇1.3.2 CPU(指令集)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: