ハイパフォーマンスの可能性があるCPUコアのオーバービューっぽい何か
巨匠から、いくつかの条件に基づいたCPUコアを知らないかと尋ねられた。
今のところ、手のひら大の見渡しがつきやすいコアしか調べてなかったが、
せっかくの機会なのでハイパフォーマンスなコアが無いか調べてみる。
(あ、もちろんフリーなコアだけです。学生だったらM32Rの研究用途無償利用とかあるけれど。)
今回は脳内妄想レベルのチェックでいいと思うのでフィッティングやデバイスとの
相性とかは考えずとりあえず、公証値でいくことにした。
殆どの公証値は作者の手元にあるチップにコンフィグできる値だろうから、
一概に性能は評価できているわけではない。
以下に列挙します。
まずは お馴染み? opencores.orgから
http://www.opencores.org/browse.cgi/filter/category_microprocessor
以下を見てみる。日本語部分はコメント、後は引用です。適宜リンク先を参照してください。
- SH-2互換
- Development status :: Production/Stable
- WISHBONEバス対応
- Performance(cpu.v)
- Xilinx VirtexE (XCV300E) 2753 slices @21MHz
- Altera Stratix (EP1S10) 7499 cells @31MHz
- オープンソースで自由に使えるっぽいコア。GCCやらuCLinuxも使える。
- When implemented in a typical 0.18u 6LM process it should provide over 300 dhrystone 2.1 MIPS at 300MHz and 300 DSP MAC 32x32 operations, at least 20% more than any other competitor in this class.
- The default OR1200 configuration uses approximately 1M transistors.
- Synthesis for Virtex FPGA results in a 3000 slices design running at 33MHz.
- Synthesis for 0.18u UMC using Virtual Silicon libraries produces 25000 gates design with area of 0.5mm2. Post layout worst case timing is 150MHz.
- 一応最適化した速い版もある模様
- http://www.eetimes.com/story/OEG20000228S0007
- Lampret is still refining OpenRISC and has a superscalar version of the core, dubbed OpenRISC 1002, that's optimized for speed. The dual-issue OpenRISC should operate at 170 MHz in a Xilinx XCV-E FPGA and offer about 250 Mips of performance, Lampret said.
- He further claims to have a 'lite' version, the OpenRISC 1001, optimized for gate count that runs at 80 MHz in a Xilinx Virtex XCV50 and that provides 80 Mips of performance. The core can be adapted to run MIPS-I code, Lampret said.
- どこかで配布されているのか不明な点が残念
JOP: a Java Optimized Processor
- 名前の通りJavaに最適化されてる?
- Very small core:
- about 2000 LCs in Altera FPGA
- fmax is 100 MHz on a Cyclone EP1C6
- まずいなぁ
- MIPSの命令を採用している。
- The miniMIPS was integrated in an FPGA from Xilinx Xc2V1000-5fg456.
- The processor speed is 50MHz. As at each cycle an instruction ends (except when there are stalls), that means 50 million instructions per second.
- これもMIPSの命令セット。そういえば、MIPS Iってフリーでは?
- EP20K200EFC484: Used LCs = 2594 / 8320 = 31.18% Utilized
- The CPU core was synthesized for 29.8 MHz and tested on an Altera EP20K200EFC484-2X FPGA at 16.5 MHz.
つかれた。。
ここまでで終わってると、opencores.orgの特定のひいきのプロセッサダイジェストなので
もうちょっと続けてみる。
メジャーどころから
LEON-1
- SPARCV7互換のMMUless
- SoC用途向け
- Mietec 0.35 CMOS std-cell 27 kgates + RAM 100 MHz (pre-layout)
- Atmel 0.35 CMOS std-cell 2 mm2 + RAM 100 MHz (pre-layout)
- Xilinx XCV300E-8 4,800 LUT + block RAM 45 MHz (post-layout)
- Altera 10K200E-1 5,400 LCELLs + EAB RAM 22 MHz (post-layout)
- Running on a Xilinx XCV300-4 at 25 Mhz, 2*2K caches, 70-ns RAM, the Dhrystone 2.1 reported 37,000 dhrystones/s. Larger caches and disabling of the icc-interlock used for FPGA implementations should give about 2,000 dhrystone/s/MHz.
- ERC32っていうSPARCV7互換のプロセッサもあったけれどあんまり積極的じゃないので省略
- SPARC V8互換
- Atmel 0.18 CMOS std-cell 35K gates + RAM 165 MHz
- Atmel 0.25 CMOS std-cell 33K gates + RAM 140 MHz
- UMC 0.25 CMOS std-cell 35K gates + RAM 130 MHz
- Atmel 0.35 CMOS std-cell 2 mm2 + RAM 65 MHz
- Xilinx XC2V3000-6 5,000 LUT + block RAM 80 MHz
- Altera 20K200C-7 5,700 LCELLs + EAB RAM 49 MHz
- Actel AX1000-3 7,600 cells + RAM 48 MHz
- プロセスが与える影響がわかる一例?
A Superscalar Version of the DLX Processor
- スーパースケーラ付きDLX
- はたしてDLX命令互換ならC言語対応できるのか?
http://www.fpgacpu.org/xsoc/cc.html
xsocはまだxr16という16bitプロセッサだけれど、xr32も計画としてはあるみたい。
xr16はベータだけれど、C言語も対応済み。
他にも時間の関係で普通に実装しただけのDLXのコアとか色々見られてないものもある。
こっちの時間の都合さえつけばCPU読み放題。いい時代になったものだとおもう。
けど、どれがおてごろ!とは一概に言えないというか、なんというか。