XC语言
编程范型 | 并发, 并行, 分布式, 多核, 实时, 指令式 |
---|---|
设计者 | XMOS |
实现者 | XMOS |
发行时间 | 2005年 |
类型系统 | 强类型, 静态 |
文件扩展名 | .xc |
主要实现产品 | |
xcc | |
启发语言 | |
C, occam, CSP |
在电脑编程中,XC是一种用于实时嵌入式并行处理器的编程语言,运行目标是XMOS的XCore处理器架构[1]。
XC是指令式语言,基于了occam语言的并行和通信特征,和C语言的语法和顺序特征[2]。它提供的根本特征对应于现有架构的各种资源,比如通道、锁和定时器。
在结合于XCore处理器时,XC被用来建造具有低层I/O、实时性能和通常现场可编程逻辑门阵列(FPGA)或专用集成电路(ASIC)装置特有的计算能力的嵌入式系统。
架构模型
XC程序在一组XCore瓦片(tile)上执行。每个瓦片包含一个或多个处理核心和在核心间共享的资源,包括I/O和内存。所有瓦片都通过通信网络连接,允许任何瓦片相互之间的通信。给定的目标系统在编译期间由编译器规定,它确保能获得充足数量的瓦片、核心和资源来执行编译好的程序。
例子程序
多核Hello World
#include <stdio.h>
#include <platform.h>
void hello(int id, chanend cin, chanend cout){
if (id > 0) cin :> int;
printf("Hello from core %d!", id);
if (id < 3) cout <: 1;
}
int main(void) {
chan c[3];
par (int i=0; i<4; i++)
on tile[i] : hello(i, c[i], c[(i+1)%4]);
return 0;
}
历史影响
XC的设计受到occam编程语言的严重影响,occam首先介入了通道通信、轮选、端口和定时器。Occam是David May开发的并建立在通信顺序进程(CSP)之上,CSP是Tony Hoare开发的进程代数系统。
参见
引用
- ^ David May. The XMOS XS1 Architecture (PDF). [2012-03-01]. ISBN 1-907361-01-4.
- ^ Douglas R. Watt. Programming XC on XMOS Devices (PDF). XMOS Limited. [2012-03-01]. ISBN 978-1-907361-03-6.