XC語言
![本頁使用了標題或全文手工轉換](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
編程範型 | 並發, 並行, 分布式, 多核, 實時, 指令式 |
---|---|
設計者 | 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.