This is done using mailboxes, special purpose registers available to the SPEs and to the PPE. 这是通过使用邮箱完成的,邮箱是SPE和PPE可以使用的一些专用寄存器。
The PPE depends on the SPEs to provide the bulk of the application performance. PPE需要依赖SPE来提供主要的应用程序性能。
But this provides a framework for interacting with the SPEs and shows the basics of how the API works. 但是这就为与SPE进行交互提供了一个框架,并且显示了API的基本工作原理。
The SPEs are independent processor elements, each running their own individual application programs or threads. SPE是独立的处理器元素,每个SPE都运行自己的独立应用程序或线程。
The SPEs depend on the PPE to run the operating system and, in many cases, the top-level thread control for an application. SPE依赖于PPE才可以运行操作系统,并且在许多情况下,还可以运行应用程序的顶层线程控制。
The SPEs access main storage with direct memory access ( DMA) commands that move data and instructions between main storage and a private local memory, called a local store or local storage ( LS). SPE用直接内存访问(DMA)命令访问主存储器,可以在主存储器与称为本地库或本地存储(LS)的私有本地内存之间移动数据和指令。
SPEs communicate with the outside world by using channels. SPE通过使用信道与外界通信。
You can best achieve huge performance advantages on Cell/ B.E.systems by downloading thread code onto SPEs. 通过将线程代码下载到SPE上,可以在Cell/B.E.系统上获得很大的性能收益。
Of course, the PPE can also perform processing tasks as well, but generally the point is to offload all that is reasonable to the SPEs. 当然,PPE也可以执行处理任务,不过通常都是将任务合理地分配给SPE执行。
The SPEs are responsible for data processing tasks. SPE负责数据处理任务。
So, not only can the PPE efficiently start overlapping execution on all SPEs, but the code would be expected to execute faster thanks to vector processing as well. 所以,PPE不但可以在所有SPE上高效地启动重叠执行,而且由于向量处理,代码会执行得更快。
The API for offloading code to the SPEs is distributed as a code library for the PPE, libspe. 将代码提供给SPE使用的API是作为PPE使用的一个代码库libspe进行分发的。
This series begins with an overview of the API used to communicate between the PPE and the SPEs. 本系列文章首先对PPE和SPE之间进行通信使用的API进行概要介绍。
Each SPE can communicate directly with main memory and furthermore, the SPEs can communicate directly with each other. 每个SPE都可以直接与主存进行通信;另外,SPE还可以相互直接进行通信。
In this example, there is one version of the SPE code used by all SPEs, but a unique copy of fibdata is used for each thread instance with fdarray. 在这个示例中,所有SPE使用SPE代码的同一个版本,但是每个线程实例通过fdarray使用fibdata的独特拷贝。
Your code must create multiple threads ( or processes, if you really prefer) to run multiple SPEs. 代码必须创建多个线程(或进程,如果您喜欢这样叫)来运行多个SPE。
DMA transfers are almost always done by the SPEs rather than by the PPE because they can handle much more data and many more active DMA operations than the PPE. DMA传输基本上总由SPE而非PPE完成,原因是SPE较PPE而言可以处理更多的数据和更多的当前DMA操作。
The EIB allows the PPE to start downloads on multiple SPEs and to overlap their starts and stops very efficiently so that the entire process is fully pipelined. EIB允许PPE在多个SPE上启动下载,并非常高效地交错它们的启动和停止,所以整个过程是完全管道化的。
It handles operating system tasks, regulates access to memory, and controls the SPEs. 它负责处理操作系统任务、管理对内存的访问并控制SPE的工作。
This is also our trusty compiler, but this one generates code for the SPEs. 这也是可信赖的一个编译器,它可以为SPE生成代码。
In the next article, I'll describe how to use the iMic to gather an analog data stream, and I'll show you how to use one of the SPEs to turn the system into a useful spectrum analyzer. 在下一篇文章中,我们将介绍如何使用iMic来搜集模拟数据流,并展示如何使用一个SPE将系统转换成一个有用的音频分析器。
The test code used to benchmark the speedup provided by the six SPEs available on the PS3 uses the Cell SDK to embed code and to pass data to the SPEs through the EIB. 测试代码对PS3上的六个SPE提供的加速效果进行基准测试,它使用CellSDK嵌入代码并通过EIB将数据传递给SPE。
This continues until all threads have been executed on the SPEs. 这个过程一直持续到所有线程都在SPE上执行。
While it is short two SPEs compared to HPC/ embedded Cell/ B.E.platforms, it can host the same SDK and be used quite readily to develop SPE offloading code. 尽管与HPC/嵌入式Cell/B.E.平台相比,它少了两个SPE,但它可以运行相同的SDK,可以用来开发SPE负载转移代码。
The SPEs include an attached memory flow controller ( MFC). SPE包括一个附加的内存流控制器(MFC)。
The SPEs use the MFC to transfer data between the local store, main memory, and other SPEs. SPE通过MFC在本地存储、主存和其他SPE间传输数据。
The PPE itself provides significant thread scaling, but it is intended to provide control and workload management for the SPEs, which provide much greater speedup for threads. PPE本身提供了很好的线程可伸缩性,但是它的主要目的是为SPE提供控制和工作负载管理,这会为线程提供大得多的加速效果。
The code for the PPE takes care of initializing the program, setting up one or more SPEs with tasks, and performing input and output. PPE的代码会负责对程序进行初始化、给一个或多个SPE设置任务并执行输入输出操作。