FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

OpenSPARC T1の調査(6. S1coreのSPC⇔WishBoneの構成)

OpenSPARC T1のインタフェースは、どうやらSPARC固有のパケットを使って通信しているらしい。 このパケットを分解して、S1Coreに搭載されているWishBoneに載せ変えているのがSPC2WBMユニットだ。

インタフェースは以下のようになっており、SPARCのパケットを受信してWishBoneへの変換ステートマシンが搭載されている。

インタフェース名 接続信号
Top-level system inputs sys_clock_i sys_clock_i
sys_reset_i sys_reset_final
sys_interrupt_source_i sys_interrupt_source
Bridge inputs connected to SPARC Core outputs spc_req_i spc_pcx_req_pq
spc_atom_i spc_pcx_atom_pq
spc_packetout_i spc_pcx_data_pa
Bridge outputs connected to SPARC Core inputs spc_grant_o pcx_spc_grant_px
spc_ready_o cpx_spc_data_rdy_cx2
spc_packetin_o cpx_spc_data_cx2
spc_stall_o wbm_spc_stall
spc_resume_o wbm_spc_resume
Top-level Wishbone Interconnect inputs wbm_ack_i wbm_ack_i
wbm_data_i wbm_data_i
Top-level Wishbone Interconnect outputs wbm_cycle_o wbm_cycle_o
wbm_strobe_o wbm_strobe_o
wbm_we_o wbm_we_o
wbm_addr_o wbm_addr_o
wbm_data_o wbm_data_o
wbm_sel_o wbm_sel_o

SPARCの命令フェッチパケットの構成

  • spc_pcx_req_pq[4:0] : processor to pcx request
  • spc_pcx_atom_pq : processor to pcx atomic request
  • spc_pcx_data_pa[123:0] : processor to pcx packet

ちなみに、T1のパケットは以下のような124ビットの構成であり、図に起こすとさらに以下のような図になる。

#define PCX_VLD         123  //PCX packet valid
#define PCX_RQ_HI       122  //PCX request type field
#define PCX_RQ_LO       118
#define PCX_NC          117  //PCX non-cacheable bit
#define PCX_R           117  //PCX read/!write bit
#define PCX_CP_HI       116  //PCX cpu_id field
#define PCX_CP_LO       114
#define PCX_TH_HI       113  //PCX Thread field
#define PCX_TH_LO       112
#define PCX_BF_HI       111  //PCX buffer id field
#define PCX_INVALL      111
#define PCX_BF_LO       109
#define PCX_WY_HI       108  //PCX replaced L1 way field
#define PCX_WY_LO       107
#define PCX_P_HI        108  //PCX packet ID, 1st STQ - 10, 2nd - 01
#define PCX_P_LO        107
#define PCX_SZ_HI       106  //PCX load/store size field
#define PCX_SZ_LO       104
#define PCX_ERR_HI      106  //PCX error field
#define PCX_ERR_LO      104
#define PCX_AD_HI       103  //PCX address field
#define PCX_AD_LO        64
#define PCX_DA_HI        63  //PCX Store data
#define PCX_DA_LO         0

f:id:msyksphinz:20170304115954p:plain

詳細は省略するが、内部にステートマシンが組まれており、SPARCのパケットをWishBoneに変換している。