FPS | DMA転送待ち割合 | mail待ち割合 | SPE稼働率 | |
---|---|---|---|---|
ball bound | 30.2 | 1.8% | 74.3% | 23.7% |
panel | 4.0 | 21.3% | 11.1% | 67.6% |
TaskList が生成され SPE に通知されるまで、SPE に待ち時間が発生する。
TaskList が生成され SPE に通知されるまで、SPE に待ち時間が発生する。
グルーピングされるため Task 毎の Mail 回数が減る。TaskList の要求回数が減る。そのため Mail の待ち時間が入る箇所が削減され、Mail の待ち時間自体の削減につながる。
TaskArray | FPS | DMA転送待ち時間 | mail待ちの割合 | SPE稼働率 |
---|---|---|---|---|
なし | 30.2 | 1.8% | 74.3% | 23.7% |
あり | 32.2 | 2.5% | 66.7% | 30.8% |
TaskArray | FPS | DMA転送待ち時間 | mail待ちの割合 | SPE稼働率 | なし | 4.0 | 21.3% | 11.1% | 67.6% |
---|---|---|---|---|
あり | 4.2 | 22.5% | 5.7% | 71.8% |
MailQueue | FPS | DMA転送待ち時間 | mail待ちの割合 | SPE稼働率 |
---|---|---|---|---|
なし | 32.2 | 2.5% | 66.7% | 30.8% |
あり | 41.7 | 3.3% | 56.8% | 40.0% |
MailQueue | FPS | DMA転送待ち時間 | mail待ちの割合 | SPE稼働率 |
---|---|---|---|---|
なし | 4.2 | 22.5% | 5.7% | 71.8% | あり | 4.2 | 23.7% | 4.1% | 72.3% |
loop() { tmp_data = get_data; get_data = send_data; send_data = tmp_data; dma_wait(WAIT_STORE); dma_store(send_data, send_addr, data_size, WAIT_STORE); dma_load(get_data, get_addr, data_size, WAIT_LOAD); dma_wait(WAIT_LOAD); calc(get_data); }
loop() { wait_segment(put_ms); put_ms = get_ms; put_segment(put_ms); get_ms = get_segment(get_addr, ml); wait_segment(get_ms); get_data = get_ms->data; calc(get_data); }
FPS | DMA転送待ち時間 | mail待ちの割合 | SPE稼働率 | |
---|---|---|---|---|
改良前 | 30.2 | 1.8% | 74.3% | 23.7% |
改良後 | 41.7 | 3.3% | 56.8% | 40.0% |
FPS | DMA転送待ち時間 | mail待ちの割合 | SPE稼働率 | |
---|---|---|---|---|
改良前 | 4.0 | 21.3% | 11.1% | 67.6% | 改良後 | 4.2 | 23.7% | 4.1% | 72.3% |
OpenGL | Cerium | 性能差 | |
---|---|---|---|
SuperDandy | 17.5 FPS | 49.5 FPS | 2.9 倍 |