Tilera平台使用体会

搞了一个半月的Tilera平台,总体上对该平台有一定的认识,这里写篇文章,算是做一个总结。

首先大概介绍一下Tilera处理器吧,这个处理器是一个众核处理器,一共有多种不同类型的CPU,其核心分别为9、36、72、100个核心。我们使用的Gx36 CPU,里面一共有36个核心。这中类型的CPU在官方宣传中号称是可以在非常低的功耗下达到Xeon E5的性能,对此我们在使用中表示呵呵呵~~~~开发这个CPU的公司是MIT搞得企业,貌似现在已经被Mellanox收购啦

好了,废话不说,简单介绍一下Tilera处理器吧。

第一章 Tilera处理器简介

1.1概述

Gx?处理器系列适合网络,视频及云计算应用。TILE-Gx?处理器系列具有最高单位面积效能耗电比的SOC特性。TILE-Gx?是 Tilera发布的新一代 64位众核处理器,TILE-Gx?具有业界高水平单位面积效能耗电比,同时拥有先进的包处理功能及为广泛的网络,视频,及云计算应用集成了相应硬件加速模块。 TILE-Gx? 由 9, 16, 36, or 72个相同的处理器核(Tiles)组成,每个Tile都是一个完整的全功能处理器,拥有独立的一级和二级缓存(L1&L2 cache),并通过内置的高速、无阻塞的交换矩阵与其他Tile互联,即Tilera独有的iMesh?片上网络。此外,Tilera独有的DDC动态分布式缓存(Dynamic Distributed Cache)技术更可为线程与共享内存的应用提供灵活可扩展的缓存访问性能。TILE-Gx?集成了一套完备的 DDR3 内存与 I/O 控制器,不再需要借助于传统的南北桥芯来实现外部数据的接入,从而大大降低了硬件系统的设计复杂度与成本。TileDirect?技术提供了IO 到处理器(Tile)缓存的直接访问途径,保证了超低延时的包处理性能。

TILE-Gx?支持标准的 ANSI C/C++编程或 Java,并支持通用的GNU开发工具链,对于开发者而言,这意味着绝大多数已有的软件或开源代码只需经过简单的移植即可在 TILE-Gx?平台上运行。此外,TILE-Gx?还支持同时运行多个操作系统,既可以每个 Tile 运行一个独立的操作系统,也可以在几个 Tile上运行一个支持多进程的操作系统,如SMP Linux。 TILE-Gx?适合用来在数据及控制平面做协处理或替代多核 CPU, DSP子系统。TILE-Gx?中集成的C可编程智能网卡功能提供了20Gbps到80Gbps的流分类及负载均衡性能。图1.1显示了Tilera-Gx36多核处理器的结构细节。

图1.1 TILE_Gx36处理器结构

表1.1则展示了TILE_Gx36的一些特性。

表1.1 TILE_Gx36特性


特性


TILE_Gx36


处理器(64bit,1.0~1.2GHz, 5层独立Mesh互联网络)


36 核
12MBytes 片上缓存
60Tbps iMesh 带宽


内存控制器(72bit 支持ECC DDR3 )


2 个内存控制器
支持 512GB 内存
支持最高 1866 MT/s


网络接口


4 个 10 Gbps XAUI 接口,支持 double-XAUI
最多 16 10/100/1000 SGMII 接口(全部XAUI接口复用)


PCI Express 集成控制器(Gen2root complex or endpoint支持,DMA支持, SRIOV 虚拟化支持)


3 PCIe 控制器
共 16 Lanes(x8,x4,x4)


treamIO 接口(芯片互联与FPGA互联,20Gps峰值性能)


3


系统集成特性


2 个 USB2.0(主/从)
3 个 I2C 接口
1 个主 SPI 接口
2 个高速 UART 接口
64 GPIO/终端管脚

JTAG 调试接口


mPIPE? 线速包处理引擎(C可编程流分类,Checksum CRC 加速,多模式直通缓存包传输的负载均衡器等)


60Mpps(最小包)


MiCA?加解密及压缩引擎


2 个 MiCA?
40 Gbps 加解密带宽(-Eoption)


典型功耗(W


22~28


封装


1265-Ball BGA,
37.5 x 37.5

1.2 Tiles

从图1.1中我们可以一个Gx36芯片内部设有36个核心(每一个称之为tile),这些核心以数组的方式二维排列。在内部,每个核相当于一个独立的CPU,都由一个64位的处理器单元、一个缓冲单元、一个开关组成。不同于传统的多核处理器,tile核之间的连接釆用网状的结构,每个核可以和其邻进的4个tile核进行交互。这种高速网状结构使核与核之间的通信非常地高效,网络的传输带宽最高时能到达500Gbps,Tilera-Gx36的总带宽高达16Tbps。如图1.2显示了单个tile核的内部结构。

图1.2 tile核的内部结构

处理器的引擎是一个传统的 64位VLIW 处理器,包含有三个指令:内存管理、保护和操作系统支持。Tile处理器包括特殊指令支持常用的嵌入式操作中的 DSP,视频和网络数据包的处理,包括:绝对差和,散列和校验和,指令加速加密,字并行的SIMD 指令,饱和运算,非对齐访问加速。

缓存引擎包含了L1D(数据缓存)、L1I(指令缓存)、L2缓存。当需要加载的数据或指令不在L1、L2中时,存储系统将会在其他tile核的L2 cache或者在外部的DDR3中进行查找。

1.3核间通信网络

如图1.1所示,每一个tile核均通过Tilera专门设计的iMesh网络进行互联,处于边界上的tile则可以通过iMesh与I/O接口进行连接。Tilera公司提供了两种可编程的核间网络通信方式:User Dynamic Network(UDN,用户动态网络),I/O Dynamic Network(I/O动态网络)。UDN 主要用来用户级应用程序的快速低延迟的明码的消息通信。Tilera 的软件套件提供了库以方便开发人员访问具有不同的编程范式的 UDN。系统软件使用IDN进行与I/O设备间的通信和系统级的核间通信。

1.4系统软件栈

运行于tile处理器上的软件分为三个层次:hypervisor层、supervisor层、application层。如图2.3所示。

图1.3 软件栈

  • Hypervisor层将Tilera处理器的硬件进行抽象,从而使supervisor层可以运行,并管理多个tile核之间的通信,以及相应的I/O控制器,并提供最底层的虚拟内存管理。
  • Supervisor层则可以在用户空间调用I/O接口和相应的库,Linux操作系统便属于该层次。在该层次,我们可以开发多核或者多线程的应用。操作系统管理相应的硬件资源,并提供各种高级服务,如创建线程、分配虚拟内存等等。
  • Application层则运行一些标准库,例如C运行时库,Tilera Multicore Components(TMC)库等等。

另外,Tilera还提供了Base Metal Environment(BME)运行环境。在该环境下,允许使用者直接控制相应的硬件资源,用户应用直接运行在hypervisor层。但是,开发此类应用要求开发者对Tilera处理器的硬件结构有相当清楚的了解,可能会花费开发者更多的时间。因此,对于大多数应用,并不推荐该方式。

1.5 tile分类

tile核可以分为如下四类。每一个tile核的类别可以通过hypervisor配置文件(.hvc)进行配置,并且在启动后不能改变。

  • lStandard类型——在该类型下,tile核遵循正常的Linux调度规则,可以运行任何任务。Linux系统可以自动在不同的tile核间进行负载均衡。
  • Dataplane类型——对于一些实时性要求较高的应用,可以将tile核设置为该模式,在该模式下,操作系统将提供最小的支持,Linux内核不会向dataplane CPU产生中断,因此应用程序将会一直运行,直到自己退出CPU。该模式通常在开发Zero Overhead Linux(ZOL)应用时使用。
  • Dedicate类型——在该模式下,tile核将完全不能被Linux利用,对于Linux来说,此时相应的tile核处于离线状态。此模式通常用于开发一些高性能的hypervisor驱动。
  • Bare Metal Environment(BME)类型——该类型下,用户完全控制相应的硬件资源。

1.6 操作系统

Tilera CPU上运行一个专门的对称多处理器Linux操作系统(Symmetric MultiProcessing Linux,SMP Linux),也称之为Tile Linux。该Linux基于标准的开源Linux 3.10版本,并且针对Tilera处理器的架构进行了专门的适配,从而可以很好的支持该CPU,并提供了操作系统的各种功能。

第二章 软件开发环境

2.1 MDE简介

对于Tilera处理器的开发,采用交叉开发环境,软件使用tilera自行开发的MDE软件。(MDE其实既可以在其他linux平台,也可以在tile linux上运行,但是官方在tile linux上安装的MDE缺少相应的编译器以及IDE,所以我们选在在安装有centos的机器上安装完整的MDE软件,以便我们可以使用其特有的交叉编译器tile-gcc,以及IDE环境)

多核开发环境(Multicore Development Environment? ,MDE) 是 Tilera 公司为进行 Tilera 平台开发而设计的软件。MDE是一个完整的、标准的多核编程解决方案。通过MDE开发者可充分发挥Tile处理器架构下的并行处理能力。MDE编程套件是当前开源工具、技术及适合下一代大规模众核设计应用解决方案的最佳组合。MDE成熟的开发环境可帮助开发人员迅速将他们的应用推向市场,同时新的工具,帮助他们充分利用Tilera多核处理器性能。通过使用Tilera的MDE套件中的高级集成视图和Profiling分析技术,开发人员可以延伸到更大规模,更复杂的多核应用。

MDE提供了命令行模式和IDE开发模式,两种模式的完全兼容,而IDE提供了更好的可视化信息。MDE支持标准的ANSI C/C++编程或 Java,并支持通用的GNU开发工具链,对于开发者而言,这意味着绝大多数已有的软件或开源代码只需在MDE下经过简单的移植即可在TILE-Gx?平台上运行。

在MDE环境下,你可以使用Tilera专门提供的多核编程API开发并行应用,也可以使用第三方代码库,或者使用传统的并行编程模型OpenMP、MPI,还可以移植任何你感兴趣的并行模型到Tilera平台,进行并行程序开发。

2.2 命令行常用命令

在命令行模式下,MDE的使用主要通过各种命令进行,如下列举了既可以在CentOS下使用也可以在Tilera服务器上使用MDE工具。

  • GCC环境

这里仅指标准的GCC编译器,tile-gcc、tile-g++交叉编译器只能运行于CentOS上。

  • tile-monitor

该工具提供了完整的程序在Tilera平台上运行、仿真接口,以及文件上传、下载、映射主机文件到tile Linux功能,还支持debug和性能分析。该工具也是在开发中使用最频繁的工具之一。

  • tile-gdb

gdb是一个标准的开源debug调试工具,尽管你可以直接使用tile-gdb命令进行调试,但是我们依然推荐使用tile-eclipse或者tile-monitor中的debug调试选项进行相同的工作。

  • OProfile

这个工具是Tilera版本的开源OProfile性能分析工具,包括了tile-opannotate和tile-opreport两个命令。我们依然推荐使用使用tile-eclipse或者tile-monitor中的性能分析选项。

  • tile-reboot

这个工具可以让你重启Tile板卡。

  • tile-mkboot

这个工具可以让你将自己的可执行文件添加到Tilera处理器的启动过程中。

  • tile-sbim(在CentOS端),sbim(在Tilera端)

这个工具可以让你管理bootable SPI ROM(SROM)的内容。

  • binutils

该工具是GNU的二进制工作集。

另外,MDE的一些命令只能在CentOS上使用,具体如下:

  • Eclipse IDE(tile-eclipse)

这是Tilera基于eclipse开发GUI接口,可以支持程序的编写、编译、运行、debug以及性能分析。

  • tile-console

这是一个基于Linux控制台的命令,可以使用该命令通过USB和串口连接Tilera主机。

  • tile-sim

这个命令可以使用软件进行仿真。

  • tile-trace-view

这个命令用于启动 Tilera Trace Viewer窗口。

其中我们使用最多的就是tile-monitor命令,以及交叉编译器tile-gcc。tile-monitor可以完成程序的上传、下载、运行等等各种功能,具体可以查看相应的命令帮助信息。

tile-monitor提供在CentOS与Tilera处理器进行交互的桥梁,其提供了丰富的功能,具体如下:

  • 在开发者主机与Tilera主机之间传输文件
  • 指定应用运行的具体tile
  • 将本地主机的文件挂载到Tile Linux文件系统上。
  • 运行应用
  • 进行debug
  • 运行OProfile性能分析工具

tile-monitor的命令格式如下:

tile-monitor [options ...] [commands...] [-- exe [args ...]]

具体的命令选项非常多,在此我们不在赘述,读者可以通过tile-monitor --help命令自行查看。其中比较常用的命令选项有:

--net <host>:<port> 通过网路连接Tilera主机

--run -+- <exectable> [<arg> …] -+- 运行可执行文件

--tile <tile> 指定应用运行的tile

--upload <host-path> <tile-path> 上传文件

--download <tile-path> <host-path>下载文件

--resume 跳过启动过程

--launch -+- <exectable> [<arg> …] -+- 运行可执行程序

2.3 IDE运行模式

首先,我们需要通过tile-ecpilse命令来启动IDE,tile-ecpilse 命令有多种可选参数,这里我们对其中的两个做出简要说明,其余请自行查看帮助信息。

直接使用命令tile-ecpilse,IDE将当前用户$HOME/.tilera/workspace/文件夹下建立工作目录。

tile-ecpilse –-here IDE将在当前目录下建立工作目录。

tile-ecpilse –-workspace directory IDE在指定路径下建立工作目录。

启动IDE后界面如图所示:

IDE的面板默认情况下可以分为上图所示的七个部分:

1、 C/C++ Projects:工程目录,包含工程的一些属性,例如makefile文件、源代码、头文件以及最终的二进制结果文件。

2、 Monitor View:通过在此视图下设置tile-monitor的命令参数,包括程序上传方式、上传路径、运行位置等等。

3、 Make Target:显示makefile文件的详细信息。

4、 显示代码窗口,可以在此窗口对代码进行查看以及修改。

5、 debug窗口,用于显示程序调试时的信息。

6、 Grid View:tile服务器的网格视图,可以看到程序运行过程中的每一个核和其他硬件资源的现状。

7、 Console:控制台窗口,显示程序的编译、链接和运行结果等。

当然我们也可以通过点击面板上方的window选项,在打开的选项卡中选择。

至于如何新建工程调试,这里就不再多讲了。程序的具体开发流程跟正常的C程序开发一样,但是我们可以使用一些tiler特有的API来完成相应的功能。相关的API可以在官方手册里面具体查看,这里也不多讲,因为基本没人会用这个玩意。

时间: 2024-10-15 01:10:00

Tilera平台使用体会的相关文章

微信公众平台二 文本编辑器与表单工具

一.排版 微信公众号,尤其是订阅号是一个自媒体平台,所以发布的内容经过精心的排版是很重要的.然而微信自带的文本编辑器,能够提供的效果有限(虽然能够支持很多种效果,但没有可视化的模板).我选择了一款第三方微信文本编辑器——秀米.网址为xiumi.us.注册登录后,图文排版—>添加新的图文,进入到如下界面: 其中,系统模板功能十分好用,只需要把合适的组件拖入右侧的编辑区,放在合适的位置上,然后在模板内进行编辑,因为组件多样化,所以排版更加灵活易定制.多试试吧!相信你很快就能熟练,下面展示我编辑的一篇

我来谈谈Thinkpad S3 20AX000ACDMP04WEHL的一点使用体会

ThinkpadS3入手已俩月有余,一直没敢写这篇文章,怕玷辱了Thinkpad的良好用户形象,但是现在必须要写了,也不是为了吐槽Thinkpad,而是为了给还没有入手的用户一个直观的使用者的体验.那么这事还得从上一款笔记本说起,我的前任笔记本是ThinkpadSL410,用了大概四年,一直到慢的实在不行了,必须要出手找个替代者了,这不,基于其良好的质量与做工,这次毅然决然的选择了Thinkpad品牌,其他品牌基本不在考虑范围之内,经过详细对比了X240与S3,最终还是决定入手S3,不仅因为它的

微信公众平台教程,注册申请、认证、开发、推广营销,教你怎么用微信公众号

微信公众平台教程 微信公众平台上至少有580多万公众号,8亿的微信用户参与其中,如此聚宝盆如何挖掘呢?本微信公众平台教程,以ytkah自己的使用体会教你怎么用微信公众号,包括微信公众平台注册申请.认证.开发.推广营销.成功案例,公众平台消息导出,关注用户备份,图文消息排版美化,图片尺寸,微信菜单设置,使用技巧等 教程目录 微信公众平台分类 微信公众平台注册,微信公众平台申请 微信公众平台登录 微信公众平台认证 微信公众平台开发 微信公众平台推广,微信公众平台营销 微信公众平台分类 服务号 给企业

Java平台与.Net平台在服务器端前景预测

如果是服务器端, 毫无疑问C#是很难跟Java拼的. 就算将来,微软逆袭的机会也很渺茫了.就技术的先进性来说, Java平台是不如.Net平台, 但是, 程序员对于两个平台,直接接触的基本以语言为主,也就是Java和C#,至于JVM和CLR,这两个运行时的好坏, 对于程序员而言 ,没有那么明显.所以, 程序员的注意力都是在Java和C#两门语言身上的. 就语言特新而言, 说Java被C#吊着打.甩几条大街,都是不为过了, 只要不是从上世纪穿越过来,没人会说Java漂亮的.这也是C#最大的优势所在

南方cass使用体会

作为一名大三测绘系学生,总会用到一些计算机软件来辅助学习,例如AutoCAd,mantoinfo,VB,科傻,cass等.我现在主要说一下对于cass的使用体会. CASS软件是广东南方数码科技股份有限公司基于AutoCAD平台开发的一套集地形.地籍.空间数据建库.工程应用.土石方算量等功能为一体的软件系统.它的功能十分强大,在数字成图方面也足够专业,能够满足我们测量专业的使用需求,但是它同样也有一些不足.首先虽然cass是基于CAD开发的软件,但是除了DWG格式的文件,都无法显示,在导入文件时

谭八爷代理订货平台系统

谭八爷代理订货平台系统  135.3879.3268   谭八爷微商下单系统.谭八爷微商管理系统.谭八爷代理商下单系统等.模式系统开发 传统行业和内容提供本质没有变,但是在结合互联网后的商业模式和运营模式变了,如当前我们谈的多的O2O,核心不是内容提供变化了,是商业模式变化了,这个商业模式变化本身又依托了一个重要假设,即解决了传统行业原有的信息不对称问题. 谭八爷微商平台系统开发的注册流程是非常简单的--扫码注册.同时后台的功能也很强大,代理们收到顾客订单后可以直接在后台向公司下单,同时后台也会

家电二维码售后服务平台系统开发

家电二维码售后服务平台系统开发,家电二维码售后系统开发,小吴183.2071.6434微电,家电二维码售后软件开发,家电二维码售后平台开发. 互联网平台的节点有两大类型:第一基数节点,也就是弱连接的节点,其规模要大,越大越好,互联网的价值与节点数的平比成正比.第二活跃节点,也就是强连接的节点,其能量要强,越强越好,互联网的价值与其强度成正比. 一.家电维修行业"维修黑幕"层出不穷 记者从一位从事家电维修人士那里了解到,目前行业公认当前家电维修行业有陷阱,"维修黑幕"

category is in invalid format hint微信第三方平台将第三方提交的代码包提交审核出错

微信第三方平台通过接口https://api.weixin.qq.com/wxa/submit_audit?access_token=TOKEN将第三方提交的代码包提交审核时一直返回错误码85008的错误信息: category is in invalid format hint 查了半天是接口提交数据时json_encode时中文不能编码提交 将向微信的提交代码     $this->https_post($url,json_encode($postData)); 改为     $this->

基于Spark MLlib平台的协同过滤算法---电影推荐系统

基于Spark MLlib平台的协同过滤算法---电影推荐系统 又好一阵子没有写文章了,阿弥陀佛...最近项目中要做理财推荐,所以,回过头来回顾一下协同过滤算法在推荐系统中的应用. 说到推荐系统,大家可能立马会想到协同过滤算法.本文基于Spark MLlib平台实现一个向用户推荐电影的简单应用.其中,主要包括三部分内容: 协同过滤算法概述 基于模型的协同过滤应用---电影推荐 实时推荐架构分析     一.协同过滤算法概述 本人对算法的研究,目前还不是很深入,这里简单的介绍下其工作原理. 通常,