Skip to content

cpu-ex/core

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

96 Commits
 
 
 
 
 
 
 
 

Repository files navigation

core

  • vivado の implementation strategy は Performance_NetDelay_high
  • main は vlw, vsw ありのコア、without-vlw branch は vlw, vsw なしのコア
  • vlw ありは最終的に動かなかったため、記録は without-vlw のもの
  • vlw なしのメモリは cpu-ex/memory の 9c38c89bdffe67db975bf28afe93cfe74eabfb3a を使用。

1st

  • 5段パイプラインコア、キャッシュあり(core 100Mhz, uart 100Mhz)
  • 実行時間 128x128 43.873s 512x512 494.393s
  • GShare predictor
  • fli, vlwなどの64bit の命令あり

仕様

Memory

  • Big endian

Data Memory(2^27 byte)

  • 0x0000000からstatic data,heap,stack,MMIOが割り当てられる。

MMIO

  • uart_addr : 0x3FFFFFC

uart_addrにlwしたら、送信、uart_addrにswしたら受信。 送信や受信ができない場合はstallする。

Instruction Memory

  • Data Memoryとは別のメモリ空間
  • サイズは2 ^ 17 byte

Instruction

RISC-VのRV32IFの一部と命令メモリに書き込むための命令swi(store word instruction)と独自拡張

実行時間予測用パラメータ

  • lwの直後に依存のある命令 +1
  • fadd, fsub +3
  • fmul +2
  • fsqrt +7
  • fdiv +11
  • fcvtsw +2
  • fcvtws +1
  • jalr +2
  • branchの予測はPHTのサイズが256bitのGShare predictor, 予測が失敗すると+2
  • lw hit時 +1
  • sw hit時 +1
  • baudrate 2304000

bootloader

0x00000000からbootloaderが置かれていて、プログラムを0x00000100にloadする。 loadし終わると、0x00000100にjumpして実行を開始

bootloader

  .globl main
  .text
main:
  addi t0, zero, 256
loop: # wait fifo reset
  addi t0, t0, -1
  blt zero, t0, loop
  li t2, 0x3FFFFFC # uart addr

  addi t0, zero, 0x99
  sw t0, 0(t2) # uart_tx
# receive program size  
  lw t1, 0(t2) # uart_rx
  slli t1, t1, 8

  lw t0, 0(t2) # uart_rx
  or t1, t1, t0
  slli t1, t1, 8

  lw t0, 0(t2) # uart_rx
  or t1, t1, t0
  slli t1, t1, 8

  lw t0, 0(t2) # uart_rx
  or t1, t1, t0

# receive program   
  li a2, 0x100 # program start point
pload:

  lw a1, 0(t2) # uart_rx
  slli a1, a1, 8

  lw a0, 0(t2) # uart_rx
  or a1, a1, a0
  slli a1, a1, 8

  lw a0, 0(t2) # uart_rx
  or a1, a1, a0
  slli a1, a1, 8

  lw a0, 0(t2) # uart_rx
  or a1, a1, a0

  swi a1, 0(a2)
  addi a2, a2, 4
  addi t1, t1, -4
  blt zero, t1, pload

  addi t0, zero, 0xaa
  sw t0, 0(t2) # uart_tx

  # jump progarm
  jalr zero, 0x100(zero)

About

A risc-v CPU

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published