untethered lowrisc memory mapped io and tilelink axi
play

Untethered lowRISC, Memory Mapped IO and TileLink/AXI Wei Song - PowerPoint PPT Presentation

Untethered lowRISC, Memory Mapped IO and TileLink/AXI Wei Song 27/07/2015 Time Line expected Nov. 2014 Apr. 2015 Now Oct. 2015 First lowRISC Rocket-Chip release Memeory Untethered from Berkeley release. Mapped IO. lowRISC release.


  1. Untethered lowRISC, Memory Mapped IO and TileLink/AXI Wei Song 27/07/2015

  2. Time Line expected Nov. 2014 Apr. 2015 Now Oct. 2015 First lowRISC Rocket-Chip release Memeory Untethered from Berkeley release. Mapped IO. lowRISC release. Initial tagged · Untethered SoC. memory support. · Support Kintex KC705. · Added tags in L1 D$, L2. · Support MMIO. · Added a tag cache. · Support SD, UART, DDRAM. · Added 2 instructions to load/ · Open simulation environment. store tag. · A tutorial about Rocket-chip. 2

  3. Rocket-Chip Release (Berkeley) Rocket Tile Rocket Tile Rocket Tile Rocket Rocket Rocket UART Core Core Core Host ARM SD Interface I$ D$ I$ D$ I$ D$ EtherNet TileLink TileLink TileLink TileLink TileLink TileLink L2 & L2 & L2 & Coherence Coherence Coherence Manager Manager Manager Arbiter MemIO Converter Memory Controller 3

  4. lowRISC Release (tagged memory) Rocket Tile Rocket Tile Rocket Tile Rocket Rocket Rocket UART Core Core Core Host ARM SD I$ D$ I$ D$ I$ D$ Interface EtherNet TileLink TileLink TileLink TileLink TileLink TileLink L2 & L2 & L2 & Tag in L1 D$, L2 $ Coherence Coherence Coherence Manager Manager Manager Tag Cache LTAG/STAG instructions Allocator Tag Cache Data Tracker & Array Tracker & Converter Converter MetaData Array Arbiter Memory Controller 4

  5. Latest Rocket-Chip (Berkeley) Rocket Tile Rocket Tile Rocket Tile UART Rocket Rocket Rocket Core Core Core Host ARM SD Interface I$ D$ I$ D$ I$ D$ EtherNet L2 Bus Cached TileLink L2 & L2 & L2 & Uncached TileLink Coherence Coherence Coherence Manager Manager Manager AXI MemIO Arbiter Multi-beat TileLink TileLink/AXI AXI Bus Standardize TileLink transactions Possible coherence support of L3 AXI/MemIO Code refactoring AXI/AXI interface (NASTI) Memory Controller 5

  6. Untethered lowRISC SoC (First Version) Cached TileLink Rocket Tile Rocket Tile Rocket Tile Uncached TileLink Rocket Rocket Rocket Core Core Core AXI I$ D$ I$ D$ I$ D$ AXI-Lite L2 IO Bus L2 Cache Bus coherent L2 & L2 & L2 & TileLink/AXI-Lite Coherence Coherence Coherence DMA Manager Manager Manager Boot Minion Arbiter UART SD EtherNet DMA Tag Cache incoherent TileLink/AXI AXI Bus On-FPGA Memory Boot Ram Controller 6

  7. Current Status Cached TileLink Rocket Tile Rocket Tile Rocket Tile Uncached TileLink Rocket Rocket Rocket Core Core Core AXI I$ D$ I$ D$ I$ D$ AXI-Lite L2 Cache Bus L2 IO Bus coherent L2 & L2 & L2 & Coherence Coherence Coherence TileLink/AXI-Lite DMA Manager Manager Manager Boot Minion Arbiter UART SD EtherNet DMA Tag Cache incoherent TileLink/AXI AXI Bus On-FPGA Memory Boot Ram Controller 7

  8. Memory Mapped IO • Target – IO load/write (B/HW/W/DW) – In-order uncached load/store – Side effect • None for all write in units of byte • None for all read in units of word (32-bit AXI-Lite) – No change in current L2 coherent manager 8

  9. Untethered lowRISC SoC (First Version) Cached TileLink Rocket Tile Rocket Tile Rocket Tile Uncached TileLink Rocket Rocket Rocket Core Core Core AXI I$ D$ I$ D$ I$ D$ AXI-Lite L2 IO Bus L2 Cache Bus coherent L2 & L2 & L2 & TileLink/AXI-Lite Coherence Coherence Coherence DMA Manager Manager Manager Boot Minion Arbiter UART SD EtherNet DMA Tag Cache incoherent TileLink/AXI AXI/AXI-Lite AXI Bus On-FPGA Memory Boot Ram Controller 9

  10. L1 Data Cache mem.finish mem.req mem.grant mem.probe wb prober [WriteBack;rocket/nbdcache.scala] wb.meta/data_read meta/data read [ProbeUnit;rocket/nbdcache.scala] 0 mshrs req data_resp wb_req Arb req release 1 meta/data read [MSHRFile;rocket/nbdcache.scala] rep mshr meta_write line_state [MSHR mshrs.wb_req rocket/nbdcache.scala] prober.release mem.release 0 Arb mshrs.meta_write 1 prober.meta/data_read mshrs.request mshrs.replay prober.meta_write s1_recycled s2_recycle s2_hit 0 s3_req s2_req Arbiter s1_req 1 2 3 4 s1_req.addr s2_data_correctable amoalu dtlb s2_data (corrected) [TLB [AMOALU cpu.ptw rocket/tlb.scala] rocket/nbdcache.scala] dtlb.ptw vpn meta ppn rhs meta 0 0 [MetadataArray s1_addr [MetadataArray uncore/cache.scala] Arbiter lhs uncore/cache.scala] 1 Arb out 1 write 2 read resp s2_data (corrected) 3 = = = = cpu.req s2_tag_eq_way 4 s2_hit data data code s1_tag_eq_way [DataArray [DataArray rocket/nbdcache.scala] rocket/nbdcache.scala] 0 [DecodeLogic 0 rocket/decode.scala] Arbiter Arb 1 1 write correctable s2_data read resp in out s1_data correct 2 3 s2_data Stage 3 Stage 1 Stage 2 Stage 4 (uncorrected) 10 cpu.resp.bits.data cpu.resp.valid

  11. L1 Data Cache (simplified) mem.req mem.grant mshr mshrs mshrs.meta_write mshrs.request mshrs.replay s2_hit s2_req Arbiter s1_req s1_req.addr dtlb s1_addr s2_hit vpn meta meta ppn Arbiter s1_addr read resp write cpu.req = = = = data amoalu data s1_tag_eq_way Arb write Arbiter rhs out s2_data read resp lhs s1_data Stage 1 Stage 2 Stage 4 Stage 3 cpu.resp 11

  12. L1 Data Cache with IO Handler mem.grant io.grant mem.req io.req mshrs mshr mshrs.meta_write mshrs.request mshrs.replay iomshr iomshr.replay replay io_data io_data s1_io_data request s2_hit s2_req ioaddr Arbiter s1_req addr io s2_req.addr s1_req.addr dtlb s1_addr s2_io_replay vpn s2_io_data meta meta ppn Arbiter s1_addr read resp write cpu.req = = = = data amoalu data s1_tag_eq_way Arb write Arbiter rhs out s2_data read resp lhs s1_data Stage 1 Stage 2 Stage 4 Stage 3 12 cpu.resp

  13. TileLink Channels • Manager/Client – Manager: Coherent manager or next level cache/device – Client: upper level cache • 5 Channels – Acquire: [C -> M] • Read, uncached write (write-through, IO), permission update – Grant: [M -> C] • Ack to Acquire (with data when read) – Finish: [C -> M] • Finish a transaction – Probe: [M -> C] • Coherence probe (snoop, invalidate) – Release: [C -> M] • Write-back (replace or invalidate) 13

  14. Untethered lowRISC SoC (First Version) Cached TileLink Rocket Tile Rocket Tile Rocket Tile Uncached TileLink Rocket Rocket Rocket Core Core Core AXI I$ D$ I$ D$ I$ D$ AXI-Lite L2 IO Bus L2 Cache Bus coherent L2 & L2 & L2 & TileLink/AXI-Lite Coherence Coherence Coherence DMA Manager Manager Manager Boot Minion Arbiter UART SD EtherNet DMA Tag Cache incoherent TileLink/AXI AXI/AXI-Lite AXI Bus On-FPGA Memory Boot Ram Controller 14

  15. TileLink Corssbar client Manager TileLink Corssbar Acquire Acquire L2 Grant Grant L1 $ Finish Finish Bank Probe Probe Release Release Acquire Acquire Grant Grant L2 L1 $ Finish Finish Bank Probe Probe Release Release 15

  16. Shared TileLink Corssbar client Manager Shared TileLink Corssbar Acquire Acquire L2 Grant Grant L1 $ Finish Finish Bank Probe Probe Release Release Acquire Acquire Grant Grant L2 L1 $ Finish Finish Bank Probe Probe Release Release Use a SuperChannel to store all types of TileLink channels. 16

  17. Current Status of TileLink/AXI • TileLink/AXI (Berkeley, Rocket-chip) – only a whole cache line • TileLink/AXI-Lite (lowRISC) – 1,2,4,8 byte write; 4,8 byte read • AHB/APB (Berkeley, Z-Scale) • Still needed: – AXI/AXI-Lite compatible, auto width SerDes switch • The AXI-Node from PULP • May be in Chisel for its parameterization capability – AXI/Wishbone, TileLink/Wishbone 17

  18. Remain Issues • Interrupt controller • Open Sourced, License compatible IPs – UART (Flexpret, BSD) – SD host controller – Ethernet controller (Xilinx IP for now) – Memory controller (difficult to get) • Open Source EDA tools – Current environment: • VCS (DRAMSim, Front-end server, DirectC) • Vivado+SDK (SDK not available for Kintex) – Target environment: • Verilator (SystemVerilog 2009, SystemC, VPI, DPI) • Vivado only 18

  19. After the Untethered SoC • Implementing the hierarchical tag cache (hardware) • Debug interface • Integrating minions (PULP) • Tag support in Rocket cores (Lucas) 19

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend