๐ โ์คํRISC SoC, Veloce๋ก 10๋ฐฐยท๊ทธ ์ด์ ๊ฐ์! โ ํ๋์จ์ด ์๋ฎฌ๋ ์ด์ ํ์ ์ฌ๋กโ
๐ Abstract
Recently the hardware emulation technique has emerged as a promising approach to accelerating hardware verification/debugging process. To fully evaluate the powerfulness of the emulation approach and demonstrate its potential impact, we propose to emulate a system-on-chip (SoC) design using Mentor Graphics Veloce emulation platform. This article presents our project setup and the results we have achieved. The results are encouraging. ORPSoC emulation with Veloce has more than ten times faster than hardware simulation. Our experimental results demonstrate that Mentor Graphics Veloce has major advantages in emulation, verification, and debugging of complicated real hardware designs, especially in the context of SoC complexity. Through our three major tasks, we will demonstrate that (1) Veloce can successfully emulate large-scale SoC designs; (2) it has much better performance comparing to the state-of-the-art simulation tools; (3) it can significantly accelerate the process of hardware verification and debugging while maintaining full signal visibility.
๐ก Analysis
**
1. ์ฐ๊ตฌ ๋ฐฐ๊ฒฝ ๋ฐ ๋ชฉ์
- ์์ฅยท๊ธฐ์ ํธ๋ ๋: ์ค๋งํธํฐยทํ๋ธ๋ฆฟ ๋ฑ ๋ณตํฉ SoC์ ์ถ์ ์ฃผ๊ธฐ๊ฐ ๊ธ์ํ ๋จ์ถ๋๋ฉด์ ์ค๊ณ ๊ฒ์ฆ ์๊ฐ ๋จ์ถ์ด ํต์ฌ ๊ณผ์ ๋ก ๋ถ์.
- ํต์ฌ ์ง๋ฌธ: Veloce์ ๊ฐ์ ํ๋์จ์ด ์๋ฎฌ๋ ์ด์ ์ด ์ค์ ๋ณต์กํ ์คํ์์ค SoC(ORPSoC)๋ฅผ ์ผ๋ง๋ ๋น ๋ฅด๊ณ ์ ํํ๊ฒ ๊ฒ์ฆํ ์ ์๋๊ฐ?
2. ์คํ ์ค๊ณ ๋ฐ ๋ฐฉ๋ฒ๋ก
| ๋จ๊ณ | ์๋ฎฌ๋ ์ด์ (ModelSim) | ์๋ฎฌ๋ ์ด์ (Veloce) |
|---|---|---|
| 1. ํ๋ก๊ทธ๋จ ์ปดํ์ผ | OpenRISC ์ปดํ์ผ๋ฌ โ ๋ฉ๋ชจ๋ฆฌ ํ์ผ(vmem) | ๋์ผ |
| 2. ์ค๊ณ ํฉ์ฑยท๋ฐฐ์น | RTL ์๋ฎฌ๋ ์ด์ ์คํ | Veloce ์ ์ฉ ํฉ์ฑ โ ํ๋์จ์ด ๋งคํ |
| 3. ํธ๋ฆฌ๊ฑฐ ์ ์ | ์์ (์๋ ์ข ๋ฃ) | Veloce ํธ๋ฆฌ๊ฑฐ ์๋ํฐ๋ก ๋ถํ ยทํ๋ก๊ทธ๋จ ์ข ๋ฃ ์๋ ๊ฐ์ง |
| 4. ์คํ & ๊ฒฐ๊ณผ ์์ง | ํํยท๋ก๊ทธ ์ถ๋ ฅ | ํํยท๋ก๊ทธ + ํธ๋ฆฌ๊ฑฐ ๊ธฐ๋ฐ ์๋ ์ข ๋ฃ |
- ํธ๋ฆฌ๊ฑฐ ๋ฉ์ปค๋์ฆ: Linux ๋ถํ ์ UART์ ์ถ๋ ฅ๋๋ ํน์ ํ๋๊ทธ, โSUMโ ๋ฐ CHStone ํ๋ก๊ทธ๋จ ์ข ๋ฃ ์ ์ฝ์ ํ ํน์ ๋ช ๋ น์ด๋ฅผ ๊ฐ์งํด ์๋ ์ข ๋ฃ. ์ด๋ ์๋ฎฌ๋ ์ด์ ์๊ฐ ์ธก์ ์ ์ ํ์ฑ์ ํฌ๊ฒ ํฅ์์ํด.
- ๋ฒค์น๋งํฌ ๊ตฌ์ฑ
- SUM N โ ๋ฐ๋ณต ํ์(N)๋ฅผ 10~10,000,000๊น์ง ๋ณํ์์ผ ์ค์ผ์ผ์ ๋ฐ๋ฅธ ์๋๋น ๋น๊ต.
- Linux ๋ถํ โ ์ ์ฒด 55โฏM ๋ช ๋ น์ด, 198โฏM ์ฌ์ดํด์ ์คํํด ์ค์ง์ ์ธ OS ๋ถํ ์๋๋ฆฌ์ค ๊ฒ์ฆ.
- CHStone โ 12๊ฐ์ ์ค๋ฌด ์์ค C ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ (์ฐ์ , ๋ฏธ๋์ด, ๋ณด์ ๋ฑ)์ผ๋ก ์ ๋ฐ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ๋ ๋ฒจ ์ฑ๋ฅ ํ๊ฐ.
3. ์ฃผ์ ๊ฒฐ๊ณผ
| ๋ฒค์น๋งํฌ | ์๋ฎฌ๋ ์ด์ ์๊ฐ | ์๋ฎฌ๋ ์ด์ ์๊ฐ | ์๋ ํฅ์ (๋ฐฐ) |
|---|---|---|---|
| SUM N (N=10โถ) | 1โฏ216โฏs | 18.9โฏs | โโฏ64ร |
| SUM N (N=10โท) | 13โฏ011โฏs | 175.6โฏs | โโฏ74ร |
| Linux ๋ถํ | โโฏ3โฏh (์์) | 127โฏs | โโฏ85ร (ModelSim์ด 10โฏk ๋ช ๋ น์ด๋น 2โฏs ๊ธฐ์ค) |
| CHStone โ ๊ณ ๋ณต์ก๋ (DFSIN) | 335โฏs | 19.4โฏs | โโฏ17ร |
| CHStone โ ์ ๋ณต์ก๋ (GSM) | 2.28โฏs | 1.67โฏs | โโฏ1.4ร |
- ์ค์ผ์ผ ์์กด์ฑ: ์์ ํ๋ก๊ทธ๋จ์์๋ ์๋ ํฅ์์ด ๋ฏธ๋ฏธํ์ง๋ง, ๋ช ๋ น์ด ์๊ฐ ์์ญ๋ง ์ด์์ผ ๋ ๊ธ๊ฒฉํ ๊ฐ์ํ๋จ.
- ์ ์ฒด ์ ํธ ๊ฐ์์ฑ ์ ์ง: Veloce๋ ์ ํต์ ์ธ FPGA ํ๋กํ ํ์ดํ๊ณผ ๋ฌ๋ฆฌ ๋ชจ๋ ๋ด๋ถ ์ ํธ๋ฅผ ํํ ํ์ผ๋ก ์ถ์ถ ๊ฐ๋ฅ, ๋๋ฒ๊น ํจ์จ์ฑ ํฌ๊ฒ ํฅ์.
4. ๊ฐ์
- ์ค์ SoC ์ค๊ณ ์ ์ฉ: ์คํ์์ค ๊ธฐ๋ฐ ORPSoC๋ฅผ ๋์์ผ๋ก ํ์ฌ ๊ฒฐ๊ณผ๊ฐ ์ฌํ ๊ฐ๋ฅํ๊ณ , ์ฐ์ ํ์ฅ์ ๋ฐ๋ก ์ ์ฉ ๊ฐ๋ฅ.
- ๋ค์ํ ๋ฒค์น๋งํฌ: ๋ง์ดํฌ๋ก๋ฒ ์ด์ค โSUMโ๋ถํฐ OS ๋ถํ , ๋ณตํฉ ์ ํ๋ฆฌ์ผ์ด์ ๊น์ง ํฌ๊ด์ ์ธ ํ๊ฐ.
- ์๋ ํธ๋ฆฌ๊ฑฐ ๊ธฐ๋ฐ ์ข ๋ฃ: ์ธ๊ฐ ๊ฐ์ ์์ด ์ ํํ ์คํ ์๊ฐ ์ธก์ ์ด ๊ฐ๋ฅํด ์คํ ์ฌํ์ฑ์ ๋์.
- ์ ์ ํํ ์ ๊ณต: ์ ํต์ ์ธ ์๋ฎฌ๋ ์ด์ ๋๋น ๋๋ฒ๊น ๋จ๊ณ์์ ํฐ ์ด์ .
5. ํ๊ณ ๋ฐ ๊ฐ์ ์
| ๊ตฌ๋ถ | ๋ด์ฉ |
|---|---|
| ์๋ฎฌ๋ ์ด์ ๋น๊ต | ModelSim ์คํ์ด โ๋ฉ์ถคโ ํ์์ ๋ณด์์ผ๋ฉฐ, ์ ํํ ๋ถํ ์๊ฐ ์ธก์ ์ด ์ด๋ ค์ ์ถ์ ๊ฐ์ ์์กด. ๋ณด๋ค ์ต์ ์๋ฎฌ๋ ์ดํฐ(์: VCS, Xcelium)์ ๋น๊ตํ๋ฉด ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง ์ ์์. |
| FPGA ๋๋น | FPGA(Spartanโ6, 50โฏMHz) ๋ถํ ์๊ฐ์ 30โฏs๋ก Veloce๋ณด๋ค ๋น ๋ฅด์ง๋ง, FPGA๋ ์ค๊ณ ์ฌ๊ตฌ์ฑยทํธ๋ฆฌ๊ฑฐ ๋ถ์ฌ ๋ฑ ๋๋ฒ๊น ์ธก๋ฉด์์ ์ ํ์ . ๋ ผ๋ฌธ์์๋ FPGA์์ ์ ๋์ ๋น๊ต๊ฐ ๋ถ์กฑํจ. |
| ์ ๋ ฅยท๋น์ฉ | ์๋ฎฌ๋ ์ด์ ์ฅ๋น(Veloce)์ ์ด๊ธฐ ํฌ์ ๋น์ฉ ๋ฐ ์ ๋ ฅ ์๋ชจ์ ๋ํ ์ธ๊ธ์ด ์์ผ๋ฉฐ, ์ค์ ์ฐ์ ์ ์ฉ ์ ROI ๋ถ์์ด ํ์. |
| ์ค์ผ์ผ ํ๊ณ | ORPSoC๋ ์ฝ 46โฏk LOC(Verilog) ์์ค์ผ๋ก, ์ต์ ๊ณ ์ฑ๋ฅ SoC(์๋ฐฑ๋ง LOC)์ ์ง์ ๋น๊ต๋ ์์ง ๋ถ์กฑํจ. |
| ์๋ ํธ๋ฆฌ๊ฑฐ ๋ณต์ก๋ | ํธ๋ฆฌ๊ฑฐ ์ ์๊ฐ ์ค๊ณ๋ง๋ค ์์์ ์ผ๋ก ์ด๋ฃจ์ด์ก์ผ๋ฉฐ, ๋๊ท๋ชจ ์ค๊ณ์์๋ ํธ๋ฆฌ๊ฑฐ ๊ด๋ฆฌ๊ฐ ๋ณต์กํด์ง ๊ฐ๋ฅ์ฑ์ด ์์. ์๋ํ ํด ์ฒด์ธ ํ์. |
6. ํ์ ยท์ฐ์ ์ ์์
- ํ์ ์ : ํ๋์จ์ด ์๋ฎฌ๋ ์ด์ ์ด ์ค์ SoC ์ค๊ณ ๊ฒ์ฆ์ ์ ๊ณตํ๋ ์๊ฐโ๊ณต๊ฐ ํธ๋ ์ด๋์คํ๋ฅผ ์ ๋ํํจ์ผ๋ก์จ, ์๋ฎฌ๋ ์ด์ ๊ธฐ๋ฐ ์ค๊ณ ํ๋ฆ์ ๋ชจ๋ธ๋ง ๋ฐ ์ต์ ํ ์ฐ๊ตฌ์ ๊ธฐ์ด ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ค.
- ์ฐ์ ์ : ์ ํ ๊ฐ๋ฐ ์ฃผ๊ธฐ ๋จ์ถ์ ๋ชฉํ๋ก ํ๋ ๋ฐ๋์ฒด ๊ธฐ์ ์๊ฒ โ์๋ฎฌ๋ ์ด์ โ ์๋ฎฌ๋ ์ด์ โ ์ค๋ฆฌ์ฝโ ๋จ๊ณ์ ๊ฐ๊ต ์ญํ ์ ๋ช ํํ ์ ์, ํนํ ๋ณต์กํ OS ๋ถํ ยท๋๋ผ์ด๋ฒ ๊ฒ์ฆ์ ์ ์ฉํจ์ ์ ์ฆํ๋ค.
7. ํฅํ ์ฐ๊ตฌ ๋ฐฉํฅ
- ๋๊ท๋ชจ ์์ฉ SoC ์ ์ฉ: ์๋ฐฑ๋ง LOC ์์ค์ ์ต์ ํ๋ก์ธ์ยทGPUยทAI ๊ฐ์๊ธฐ ํฌํจ ์ค๊ณ์ Veloce ์ ์ฉ ์ฌ๋ก ํ๋.
- ์ ๋ ฅยท์๋์ง ํจ์จ ์ธก์ : ์๋ฎฌ๋ ์ด์ ์ค ์ ๋ ฅ ์๋ชจ์ ์๋ฎฌ๋ ์ด์ ๋๋น ์๋์ง ํจ์จ์ ์ ๋ํํ์ฌ ๋น์ฉโํจ์จ์ฑ์ ํ๊ฐ.
- ์๋ ํธ๋ฆฌ๊ฑฐ ์์ฑ ํ๋ ์์ํฌ: ๊ณ ์์ค ์ธ์ด(์: SystemC, C++)์์ ํ ์คํธ๋ฒค์น ์๋ ๋ณํยทํธ๋ฆฌ๊ฑฐ ์ฝ์ ํ์ดํ๋ผ์ธ ๊ตฌ์ถ.
- ๋ฉํฐโ์๋ฎฌ๋ ์ดํฐ ํ์ : Veloce์ FPGA ํ๋กํ ํ์ดํ์ ๊ฒฐํฉํ ํ์ด๋ธ๋ฆฌ๋ ํ๋ฆ(์: FPGAโinโtheโLoop) ์ฐ๊ตฌ.
- ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ์๋ฎฌ๋ ์ด์ ์๋น์ค: ๋๊ท๋ชจ ์ค๊ณํ์ด ์ ๊ทผ ๊ฐ๋ฅํ SaaS ํํ์ ์๋ฎฌ๋ ์ด์ ํ๋ซํผ ๋ชจ๋ธ ์ ์.
์์ฝ
๋ณธ ๋
ผ๋ฌธ์ MentorโฏGraphicsโฏVeloce๊ฐ ์คํ์์ค SoC์ธ ORPSoC๋ฅผ 10๋ฐฐ ์ด์ ๋น ๋ฅด๊ฒ ์๋ฎฌ๋ ์ด์
ํ ์ ์์์ ์คํ์ ์ผ๋ก ์
์ฆํ๋ค. ํนํ ๋๊ท๋ชจ ๋ช
๋ น์ด ์คํยทOS ๋ถํ
ยท๋ณตํฉ ์ ํ๋ฆฌ์ผ์ด์
ํ
์คํธ์์ ์๋ฎฌ๋ ์ด์
๋๋น ํ์ ํ ์๋ ํฅ์์ ๋ณด์ด๋ฉฐ, ์ ์ ์ ํธ ๊ฐ์์ฑ์ ์ ์งํ๋ค๋ ์ ์ด ํฐ ๊ฐ์ ์ด๋ค. ๋ค๋ง ์๋ฎฌ๋ ์ด์
๋น๊ต์ ์ ํ์ฑ, ๋น์ฉยท์ ๋ ฅ ๋ถ์, ๋๊ท๋ชจ ์ค๊ณ ์ ์ฉ ๊ฐ๋ฅ์ฑ ๋ฑ์ ๋ํ ์ถ๊ฐ ์ฐ๊ตฌ๊ฐ ํ์ํ๋ค. ์ด๋ฌํ ๊ฒฐ๊ณผ๋ ํ๋์จ์ด ์ค๊ณ ๊ฒ์ฆ ํ๋ฆ์ ์๋ฎฌ๋ ์ด์
์ ์ ๊ทน ๋์
ํ๋ ค๋ ํ๊ณยท์ฐ์
๊ณ ๋ชจ๋์๊ฒ ์ค์ํ ์ฐธ๊ณ ์๋ฃ๊ฐ ๋ ๊ฒ์ด๋ค.
๐ Content
2014 Veloce ์๋ฎฌ๋ ์ด์ ๋ํ ๋ณด๊ณ ์
OpenRISC SystemโonโChip ์ค๊ณ ์๋ฎฌ๋ ์ด์
Kai Cong, Li Lei, Zhenkun Yang
์ง๋๊ต์: Fei Xie
{congkai, leil, zhenkun, xie}@cs.pdx.edu
Portland State University ์ปดํจํฐ ๊ณผํ๊ณผ, ํฌํ๋๋, ์ค๋ ๊ณค
1. ์๋ก
์ค๋งํธํฐยทํ๋ธ๋ฆฟ ๋ฑ ์๋ก์ด ์ปดํจํฐ ์์คํ ์ด ์ ์ ๋ ๋น ๋ฅธ ์๋๋ก ์์ฅ์ ์ถ์๋๊ณ ์์ต๋๋ค. ์ด๋ ์ ํ ๊ฐ๋ฐ ํ์๊ฒ ์์ฅ ์ถ์ ์๊ฐ(TimeโtoโMarket)์ ๋จ์ถํด์ผ ํ๋ค๋ ๋ง๋ํ ์๋ฐ์ ๊ฐํฉ๋๋ค. ์ค๊ณ ๋ณต์ก๋๊ฐ ์ฆ๊ฐํ๊ณ ์์ฅ ์ถ์ ์๊ฐ์ด ๋จ์ถ๋๋ ํ๋ฆ ์์์, ํ๋์จ์ด ์ค๊ณ ์๋ฎฌ๋ ์ด์ ยท๊ฒ์ฆยท๋๋ฒ๊น ์ ๊ฐ์ํํ๊ธฐ ์ํ ํ์ ์ ์ธ ์ ๊ทผ๋ฒ์ด ์๊ตฌ๋ฉ๋๋ค.
์ต๊ทผ ํ๋์จ์ด ์๋ฎฌ๋ ์ด์ ๊ธฐ์ ์ด ํ๋์จ์ด ๊ฒ์ฆยท๋๋ฒ๊น ๊ณผ์ ์ ๊ฐ์ํํ๋ ์ ๋งํ ๋ฐฉ๋ฒ์ผ๋ก ๋ถ์ํ๊ณ ์์ต๋๋ค.
์๋ฎฌ๋ ์ด์ ์ ๊ทผ๋ฒ์ ๊ฐ๋ ฅํจ์ ์ถฉ๋ถํ ํ๊ฐํ๊ณ ๊ทธ ์ ์ฌ์ ์ํฅ์ ์ ์ฆํ๊ธฐ ์ํด, ์ฐ๋ฆฌ๋ Mentor Graphics Veloce ์๋ฎฌ๋ ์ด์ ํ๋ซํผ์ ์ด์ฉํด SystemโonโChip(SoC) ์ค๊ณ๋ฅผ ์๋ฎฌ๋ ์ด์ ํ๋ ํ๋ก์ ํธ๋ฅผ ์ํํ์ต๋๋ค. ๋ณธ ๋ ผ๋ฌธ์์๋ ํ๋ก์ ํธ ์ค์ ๊ณผ ์ป์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ํฉ๋๋ค. ๋ณธ ํ๋ก์ ํธ์์ ์ํํ ์์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๊ธฐ์กด ์คํ์์ค SoC ์ค๊ณ์ธ OpenRISC Reference Platform System on Chip (ORPSoC) ๋ฅผ ๋ ๋ฆฝํ ์๋ฎฌ๋ ์ด์
- ์ธ ๊ฐ์ง ๋ฒค์น๋งํฌ๋ฅผ ์ด์ฉํ ์๋ฎฌ๋ ์ด์
์ฑ๋ฅ ํ๊ฐ
- ๋ค์ํ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ์ง โsumโ ํ๋ก๊ทธ๋จ ์คํ
- ORPSoC ์์์ Linux ์ปค๋ ๋ถํ
- ORPSoC ์์์ ์ฌ๋ฌ ์ํํธ์จ์ด ํ๋ก๊ทธ๋จ ์คํ
- ์๋ฎฌ๋ ์ด์ ์ ๊ทผ๋ฒ๊ณผ์ ์ฒ ์ ํ ๋น๊ต โ Mentor Graphics ModelSim์ ์ด์ฉํ ORPSoC ์๋ฎฌ๋ ์ด์
๊ฒฐ๊ณผ๋ ๊ณ ๋ฌด์ ์ ๋๋ค. Veloce๋ฅผ ์ด์ฉํ ORPSoC ์๋ฎฌ๋ ์ด์ ์ ํ๋์จ์ด ์๋ฎฌ๋ ์ด์ ๋ณด๋ค 10๋ฐฐ ์ด์ ๋น ๋ฆ ๋๋ค. ์คํ ๊ฒฐ๊ณผ๋ Mentor Graphics Veloce๊ฐ ๋ณต์กํ ์ค์ ํ๋์จ์ด ์ค๊ณ, ํนํ SoC ๋ณต์ก์ฑ ๋งฅ๋ฝ์์ ์๋ฎฌ๋ ์ด์ ยท๊ฒ์ฆยท๋๋ฒ๊น ์ ํฐ ์ฅ์ ์ ๊ฐ์ง๊ณ ์์์ ๋ณด์ฌ์ค๋๋ค.
์ธ ๊ฐ์ง ์ฃผ์ ๊ณผ์ ๋ฅผ ํตํด ์ฐ๋ฆฌ๋ ๋ค์์ ์ ์ฆํฉ๋๋ค.
- Veloce๋ ๋๊ท๋ชจ SoC ์ค๊ณ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์๋ฎฌ๋ ์ด์ ํ ์ ์๋ค.
- ์ต์ ์๋ฎฌ๋ ์ด์ ํด์ ๋นํด ๋ฐ์ด๋ ์ฑ๋ฅ์ ์ ๊ณตํ๋ค.
- ์ ์ฒด ์ ํธ ๊ฐ์์ฑ์ ์ ์งํ๋ฉด์ ํ๋์จ์ด ๊ฒ์ฆยท๋๋ฒ๊น ๊ณผ์ ์ ํฌ๊ฒ ๊ฐ์ํ๋ค.
2. ๋ฐฐ๊ฒฝ
OpenRISC 1200
OpenRISC 1200 (OR1200)โฏ[1]์ OpenCoresโฏ[2] ์ปค๋ฎค๋ํฐ์์ ๊ฐ๋ฐยท์ ์ง๋ณด์๋๋ ํฉ์ฑ ๊ฐ๋ฅํ CPU ์ฝ์ด์ ๋๋ค. OR1200 ์ค๊ณ๋ OpenRISCโฏ1000 RISC ์ํคํ ์ฒโฏ[3]๋ฅผ Verilog HDL๋ก ๊ตฌํํ ์คํ์์ค ๊ตฌํ์ฒด์ด๋ฉฐ, ์ฃผ์ ํน์ง์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ค์ CPU/DSP ๋ธ๋ก
- ์ง์ ๋งคํ๋ ๋ฐ์ดํฐยท๋ช ๋ น์ด ์บ์
- WISHBONE ๋ฒ์ค ์ธํฐํ์ด์ค
ORPSoC
ORPSoC๋ OpenRISC ๊ธฐ๋ฐ ๋ ํผ๋ฐ์ค SoCโฏ[4]๋ก, Figureโฏ1์ ๋ํ๋ ๋ฐ์ ๊ฐ์ด ๋ค์๊ณผ ๊ฐ์ ํ๋์จ์ด ๊ตฌ์ฑ ์์๋ฅผ ํฌํจํฉ๋๋ค.
- WISHBONE ๋ฒ์ค
- SRAM ๋ฉ๋ชจ๋ฆฌ
- ๋ฒ์ฉ ์ ์ถ๋ ฅ(GPIO)
- UART ์ง๋ ฌ ํฌํธ
- 10/100โฏMbps Ethernet MAC
Figureโฏ1: ORPSoC ์ํคํ ์ฒ(์ฃผ์ ๊ตฌ์ฑ ์์)
3. ORPSoC ์๋ฎฌ๋ ์ด์
์ฐ๋ฆฌ๋ Mentor Graphics ModelSim์ RTL ์ค๊ณ ์๋ฎฌ๋ ์ดํฐ๋ก ์ฌ์ฉํ์ต๋๋ค. ์๋ฎฌ๋ ์ด์ ํ๋ฆ์ Figureโฏ2์ ๋ํ๋ ์์ต๋๋ค.
Figureโฏ2: ModelSim์ ์ด์ฉํ ORPSoC ์๋ฎฌ๋ ์ด์ ํ๋ฆ
์๋ฎฌ๋ ์ด์ ์ ์ฐจ๋ ๋ค์ ์ธ ๋จ๊ณ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- OpenRISC ์ปดํ์ผ๋ฌ๋ฅผ ์ด์ฉํด ORPSoC์์ ์คํ๋ ๋ชฉํ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ ํ์ผ(ROM ์ด๋ฏธ์ง)๋ก ์ปดํ์ผํ๋ค.
- ModelSim์ ์ปดํ์ผ๋ ORPSoC ์ค๊ณ์ ๋ฉ๋ชจ๋ฆฌ ํ์ผ์ ๋ฐ์ ๋ชฉํ ํ๋ก๊ทธ๋จ์ ์๋ฎฌ๋ ์ด์ ํ๋ค.
- ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋๋ฉด ModelSim์ ์ ํ๋ ์ ํธ๋ค์ ํํ์ ์ถ๋ ฅํ๊ณ , ํ๋ก๊ทธ๋จ ์ถ๋ ฅ ๋ก๊ทธ๋ฅผ ํ์ผ์ ๊ธฐ๋กํ๋ค.
4. ORPSoC ์๋ฎฌ๋ ์ด์
4.1 ์๋ฎฌ๋ ์ด์ ์ํฌํ๋ก์ฐ
Mentor Graphics Veloce๋ฅผ ์ด์ฉํ ORPSoC ์๋ฎฌ๋ ์ด์ ํ๋ฆ์ Figureโฏ3์ ์์ฝ๋ฉ๋๋ค. ์ฌ๊ธฐ์ ๋ชฉํ ํ๋ก๊ทธ๋จ์ผ๋ก๋ถํฐ ์์ฑ๋ ๋ฉ๋ชจ๋ฆฌ ํ์ผ์ ํ ์คํธ๋ฒค์น ์ญํ ์ ํ๋ฉฐ, ORPSoC ์ค๊ณ์ ๋๋์ CPU ๋ช ๋ น์ ๊ณต๊ธํฉ๋๋ค.
Figureโฏ3: Veloce๋ฅผ ์ด์ฉํ ORPSoC ์๋ฎฌ๋ ์ด์ ํ๋ฆ
์๋ฎฌ๋ ์ด์ ์ ์ฐจ๋ ๋ค ๋จ๊ณ๋ก ์ด๋ฃจ์ด์ง๋๋ค.
- OpenRISC ์ปดํ์ผ๋ฌ๋ก ๋ชฉํ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ ํ์ผ๋ก ์ปดํ์ผํ๊ณ , ์ด๋ฅผ ORPSoC ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํ๋ค.
- Veloce ์ํํธ์จ์ด๊ฐ ORPSoC ์ค๊ณ๋ฅผ ์ปดํ์ผยทํฉ์ฑํ ๋ค, ํด๋น ์ค๊ณ๋ฅผ Veloce ๋จธ์ ์ ๊ตฌ์ฑํ๋ค.
- ์๋ฎฌ๋ ์ด์ ์ ์๋์ผ๋ก ์ข ๋ฃ์ํค๊ธฐ ์ํด ํธ๋ฆฌ๊ฑฐ๋ฅผ ์ ์ํ๊ณ ์ ์ฉํ๋ค.
- ์๋ฎฌ๋ ์ด์ ์์ ์ , ๋ฉ๋ชจ๋ฆฌ์ ํธ๋ฆฌ๊ฑฐ๋ฅผ Veloce ๋จธ์ ์ ๋ค์ด๋ก๋ํ๊ณ , ์๋ฎฌ๋ ์ด์ ์ ์คํํ๋ค. ํธ๋ฆฌ๊ฑฐ๊ฐ ๊ฐ์ง๋๋ฉด ์๋ฎฌ๋ ์ด์ ์ด ์ข ๋ฃ๋๊ณ ํํ ํ์ผ ๋ฐ ๊ด๋ จ ์ ๋ณด๊ฐ ์์ฑ๋๋ค.
4.2 ์๋ฎฌ๋ ์ด์ ํธ๋ฆฌ๊ฑฐ
Veloce๋ ํธ๋ฆฌ๊ฑฐ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ์ฌ ์๋ฎฌ๋ ์ด์ ์ค ํน์ ๋ ผ๋ฆฌ ์ํ๋ฅผ ๊ฐ์งํ ์ ์์ต๋๋ค. ๋ณธ ํ๋ก์ ํธ์์๋ Linux ๋ถํ ๊ณผ ์ผ๋ฐ ํ๋ก๊ทธ๋จ ์คํ์ ๊ฐ๊ฐ ๊ฐ์งํ๊ธฐ ์ํด ๋ ๊ฐ์ ํธ๋ฆฌ๊ฑฐ๋ฅผ ์ ์ํ์ต๋๋ค. ํธ๋ฆฌ๊ฑฐ๋ ์๋ฎฌ๋ ์ด์ ์ข ๋ฃ ์กฐ๊ฑด์ ๊ฒฐ์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. Veloce ํธ๋ฆฌ๊ฑฐ ์๋ํฐ๋ฅผ ์ด์ฉํ๋ฉด ํธ๋ฆฌ๊ฑฐ๋ฅผ ์์ฝ๊ฒ ์์ฑํ๊ณ ํธ๋ฆฌ๊ฑฐ ๋ค์ด์ด๊ทธ๋จ์ ์๋์ผ๋ก ๋ง๋ค ์ ์์ต๋๋ค.
4.2.1 Linux ๋ถํ ํธ๋ฆฌ๊ฑฐ
Linux ์์คํ ๋ถํ ์์ ์ ํ๋จํ๊ธฐ ์ํด, ์ฐ๋ฆฌ๋ Linux ์ปค๋ ์์ค์ UART ๋ชจ๋์ ํตํ ํน์ ํ๋๊ทธ ์ถ๋ ฅ ์ฝ๋๋ฅผ ์ฝ์ ํ์ต๋๋ค. ์ดํ ํด๋น ํ๋๊ทธ๊ฐ UART์ ๋ํ๋๋ ์๊ฐ์ ํฌ์ฐฉํ๋ ํธ๋ฆฌ๊ฑฐ๋ฅผ ์ ์ํ์ต๋๋ค. ํธ๋ฆฌ๊ฑฐ ๋ค์ด์ด๊ทธ๋จ์ ์๋์ ๊ฐ์ต๋๋ค.
4.2.2 ์ผ๋ฐ ํ๋ก๊ทธ๋จ ํธ๋ฆฌ๊ฑฐ
CHStone ๋ฒค์น๋งํฌ์ โSUMโ ํ๋ก๊ทธ๋จ ๋ฑ ์ผ๋ฐ ํ๋ก๊ทธ๋จ์ ์ข ๋ฃ ์์ ์ ํ๋จํ๊ธฐ ์ํด, ํ๋ก๊ทธ๋จ ๋ฉ๋ชจ๋ฆฌ ํ์ผ์ ๋๋ถ๋ถ์ ํน์ ๋ช ๋ น์ ์ฝ์ ํ์ต๋๋ค. ์ด ๋ช ๋ น์ด ์คํ๋ ๋๋ฅผ ํฌ์ฐฉํ๋ ํธ๋ฆฌ๊ฑฐ๋ฅผ ์ ์ํ์ผ๋ฉฐ, ํธ๋ฆฌ๊ฑฐ ๋ค์ด์ด๊ทธ๋จ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
5. ํ๊ฐ
๋ณธ ์ ์์๋ Veloce๊ฐ ๋ณต์กํ ํ๋์จ์ด ์ค๊ณ๋ฅผ ๋ค๋ฃฐ ๋ ์ป์ ์ ์๋ ์๋ ํฅ์์ ์ค์ ์ ์ผ๋ก ํ๊ฐํฉ๋๋ค. ํ๊ฐ ๋์์ ๋ ๊ฐ์ง ์ ๊ทผ๋ฒ์ด๋ฉฐ, ๊ฐ๊ฐ ์ธ ๊ฐ์ง ๋ฒค์น๋งํฌ์ ๋ํด ์คํํ์ต๋๋ค.
- ORPSoC ์๋ฎฌ๋ ์ด์ (ModelSim)
- ORPSoC ์๋ฎฌ๋ ์ด์ (Veloce)
๋ฒค์น๋งํฌ
- SumโฏN โ ๋ค์ํ N๊ฐ์ ๊ฐ๋ โsumโ ํ๋ก๊ทธ๋จ ์คํ
- Linux ์์คํ ๋ถํ โ ORPSoC ์์์ Linux ์ปค๋ ๋ถํ
- CHStone โ 12๊ฐ์ ์๋ก ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ๊ตฌ์ฑ๋ C ๊ธฐ๋ฐ ๋ฒค์น๋งํฌ
5.1 ORPSoC ๊ธฐ๋ณธ ์ ๋ณด
TableโI์ ORPSoC ์ค๊ณ์ ๊ธฐ๋ณธ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค. ์ฌ๊ธฐ์๋ Blank, Comment, Code ๋ผ์ธ์ LOC(์ค ์) ๋ก ํ๊ฐํ์ต๋๋ค.
| Language | Files | Blank | Comment | Code |
|---|---|---|---|---|
| Verilog | 201 | 7โฏ466 | 21โฏ276 | 46โฏ611 |
5.2 ๋ฒค์น๋งํฌโฏ1: SumโฏN
โsumโ ํ๋ก๊ทธ๋จ์ Nโฏ=โฏ10,โฏ100,โฏ1โฏ000,โฏ10โฏ000,โฏ100โฏ000,โฏ1โฏ000โฏ000,โฏ10โฏ000โฏ000 ๋ฑ ๋ค์ํ ํฌ๊ธฐ๋ก ์คํํ์ ๋์ ์๋ฎฌ๋ ์ด์ ยท์๋ฎฌ๋ ์ด์ ์๊ฐ๊ณผ ์๋ ํฅ์ ๋น์จ์ TableโII์ Figureโ4์ ์ ๋ฆฌํ์ต๋๋ค.
- N์ด ์์ ๋๋ Veloce๊ฐ ํฐ ์ด์ ์ ๋ณด์ด์ง ์์.
- N์ด ์ปค์ง์๋ก Veloce์ ์๋ ํฅ์์ด ๊ธ๊ฒฉํ ์ฆ๊ฐํจ.
์์ ์ฝ๋
#define N 10
int main() {
long int i = 0, sum = 0;
for (i = 0; i < N; i++)
sum += i;
return 0;
}TableโII: N๋ณ ์คํ ๊ฒฐ๊ณผ
| N | Simulation Time (s) | Emulation Time (s) | Speedup (ร) |
|---|---|---|---|
| 10 | 1.908 | 1.663 | 1.15 |
| 100 | 1.982 | 1.7 | 1.17 |
| 1โฏ000 | 3.122 | 1.66 | 1.88 |
| 10โฏ000 | 13.776 | 1.788 | 7.70 |
| 100โฏ000 | 120.987 | 3.356 | 36.05 |
| 1โฏ000โฏ000 | 1โฏ216.704 | 18.941 | 64.24 |
| 10โฏ000โฏ000 | 13โฏ011.505 | 175.612 | 74.09 |
Figureโฏ4: N์ด ์ฆ๊ฐํจ์ ๋ฐ๋ผ Veloce๊ฐ ๋ฌ์ฑํ ์๋ ํฅ์
5.3 ๋ฒค์น๋งํฌโฏ2: Linux ์์คํ ๋ถํ
Linux ์ปค๋์ ์์ค์์ ์ง์ ์ปดํ์ผํ๊ณ , ์์ฑ๋ vmem ํ์ผ์ ORPSoC ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํ ๋ค ๋ถํ ์ ์๋ฎฌ๋ ์ด์ ยท์๋ฎฌ๋ ์ด์ ํ์ต๋๋ค. ๋ถํ ๊ณผ
์ด ๊ธ์ AI๊ฐ ์๋ ๋ฒ์ญ ๋ฐ ์์ฝํ ๋ด์ฉ์ ๋๋ค.