文章较长,为方便快捷阅读,整体目录如下。
核心架构设计
全分布式内存架构
核心datapath
核心数据流调度
芯片scale-up设计
PE间fabric网络互联
PE间通信样例代码
芯片间互联
weight -streaming执行流程
MatMul数组及 GEMM执行
集群scale-out设计
同时拥有256B的本地缓存,一般用于频繁访问的数据。此缓存设计在物理上靠近datapath,频繁的数据访问可以以超低功耗运行。
与GPU相比,WSE-2的内存带宽提高了200倍。
因为稀疏GEMM实际上只是一系列AXPY操作的集合,每个非零元素对应一个操作。大内存带宽是实现非结构化稀疏性加速的必备条件。
指令可以终止当前正在运行的任务,然后硬件从构成 PE 代码的任务集中选择一个新任务。它选择一个可运行的任务或者已被激活的任务。 传入的32位消息(wavelets)沿着称为color的虚拟通道传播(共24个),所有color属于同一个物理通道,虚拟通道之间数据传输相互不影响。
// 7 is the ID of a color with some defined data routing
const red: color = @get_color(7);
// On WSE-3, 2 is the ID of an input queue which will
// be bound to our data task.
const iq: input_queue = @get_input_queue(2);
// For WSE-2, the ID for this task is created from a color.
// For WSE-3, the ID for this task is created from an input queue.
const red_task_id: data_task_id =
if (@is_arch("wse3")) @get_data_task_id(iq)
else @get_data_task_id(red);
var result: f32 = 0.0;
task main_task(wavelet_data: f32) {
result = wavelet_data;
}
comptime {
@bind_data_task(main_task, red_task_id);
// For WSE-3, input queue to which our data task is bound
// must be bound to color red.
if (@is_arch("wse3")) @initialize_queue(iq, .{ .color = red });
}