<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">A Prototyping and Evaluation Framework for Research on Timing-analysable Memory Hierarchies for Embedded Multicore SoCs</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Florian</forename><surname>Haas</surname></persName>
							<email>haas@es-augsburg.de</email>
							<affiliation key="aff0">
								<orgName type="institution">University of Augsburg</orgName>
								<address>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Sebastian</forename><surname>Altmeyer</surname></persName>
							<email>altmeyer@es-augsburg.de</email>
							<affiliation key="aff0">
								<orgName type="institution">University of Augsburg</orgName>
								<address>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">A Prototyping and Evaluation Framework for Research on Timing-analysable Memory Hierarchies for Embedded Multicore SoCs</title>
					</analytic>
					<monogr>
						<idno type="ISSN">1613-0073</idno>
					</monogr>
					<idno type="MD5">67B0C0F960285A0350EC778D6B2DA539</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T16:28+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>parallel real-time system</term>
					<term>memory hierarchy</term>
					<term>FPGA prototyping framework</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Research on memory hierarchies regarding the non-functional requirements in embedded multicore systems demands for a framework to support the prototyping and evaluation of new methods. In current multicore processors, accesses on shared resources by arbitrary tasks lead to interferences, which can result in timing violations of high-priority tasks. However, incorporating all potential interferences in the schedulability analysis leads to an enormous overestimation of the task execution times, and requires a full analysis of all tasks running on the system. Enhancements in the memory hierarchy can provide isolation to restrict potential interferences, thus improving the worst-case performance. To research on modifications in the memory hierarchy of a multicore processor, a prototyping and evaluation framework is required. This paper describes the design of such a framework, and outlines the individual parts and their interconnections.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1.">Introduction</head><p>The performance of multicore processors is strongly desired in various domains of embedded systems to satisfy the increasing demand for computational power. Complex algorithms and software systems, e. g. in autonomous driving, benefit from high-performance general-purpose shared-memory multicores. However, these processors do not meet the typical requirements on real-time and safety, and thus cannot be used without performance-degrading and laborious software mechanisms. Elaborate methods in such systems have been developed to further improve the average-case performance of the processor, for example the increasing depth of the memory hierarchy. These and the shared resources, like last-level caches, buses, and main memory, result in the ultimate challenge of calculating tight WCET bounds for the tasks in a time-critical system.</p><p>The crucial problem is the missing guaranteed freedom of interferences between tasks that run on separate cores. Thus, an arbitrary low-priority task is able to influence the timing behaviour of another, potentially high-priority task on a different core. This can happen through accesses on shared resources, for example shared caches or the main memory <ref type="bibr" target="#b0">[1]</ref>. As a consequence, a schedulability analysis of the overall system with only minimal overestimation becomes nearly impossible for more than a few cores and deeper memory hierarchies.</p><p>The general objective of research on this topic is to facilitate predictable performance, with minimal over-estimation of timing bounds, by reducing the sources of potential interferences on shared resources. Existing software-based approaches, e. g. performance counter monitors <ref type="bibr" target="#b1">[2]</ref>, or program modification during compilation, are limited, as they can either only detect excessing interferences, or are required to be applied to all tasks of the system. Thus, hardware mechanisms promise a better lever to control the behaviour of any task on the system. However, to research hardware-implemented methods, a proper evaluation platform is required. For example, a hardware implementation of a memory bandwidth reservation mechanism like MemGuard <ref type="bibr" target="#b2">[3]</ref> could be evaluated and compared with other approaches. To research potential improvements on shared resource accesses under timing constraints, a realistic model of a typical memory hierarchy is needed in the first place. Microarchitecture simulators with multicore configurations exist, but their processor-centric design does not support for a prototype implementation and a realistic evaluation. Further, the evaluation system needs to be capable of executing realistic benchmarks, for prototyping different ideas, as well as for a thorough evaluation of their impact on the performance.</p><p>Previous work focused mostly on fault tolerance of parallel systems, but the research always involved shared-memory systems. Different systems have been used to evaluate the proposed methods, from software-only approaches on typical desktop and server hardware, over the Gem5 simulator, to FPGA prototypes. As a side effect of the conducted implementations and evaluations, some experience with diverse platforms has been collected. The work on a softwareonly fault tolerance mechanism <ref type="bibr" target="#b3">[4,</ref><ref type="bibr" target="#b4">5]</ref> showed the numerous restrictions of an unmodifiable hardware implementation. To overcome these limitations, later research was undertaken on the Gem5 microarchitecture simulator, where a customized hardware transactional memory was built into the memory hierarchy <ref type="bibr" target="#b5">[6,</ref><ref type="bibr" target="#b6">7]</ref>. However, since the simulator focuses on the detailed simulation of the processor cores itself, it provides only a rather functional memory hierarchy with limited timing accuracy. Switching to an FPGA prototype with multiple MicroBlaze softcores <ref type="bibr" target="#b7">[8]</ref> showed the difficulties of integrating hardware and software parts with non-open processor cores. Overall, these experiences affirm the demand for an open system to prototype and evaluate memory hierarchies for future research ideas.</p><p>This paper describes a prototyping and evaluation framework for embedded multicore systems, and outlines the assembly of the individual parts into a synthesizable design for both simulation and prototyping on an FPGA. The framework is based on ChipYard, which supports design and evaluation of full-system hardware, using the Rocket Chip generator and its in-order RISC-V CPUs. The main benefit of ChipYard is the configurability and customizability of the involved modules. The interconnects could also be replaced with a NoC to research on manycore systems, or a combination of both with shared-memory clusters connected through a NoC. Based on the proposed framework, the research on elements of the memory hierarchy will be facilitated to improve the applicability of multicore processors in embedded systems.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">Requirements for Research on Timing Predictable Shared-memory Multicore Systems</head><p>To approach the objective of calculating tight WCET bounds for time-sensitive tasks in sharedmemory multicore systems, the potential interferences on shared resources have to be identified and measured first. While such evaluations can be performed on existing hardware, potential new methods to prevent or restrict interferences require customisable hardware components.</p><p>A system that enables the modification and enhancement of individual elements in the memory hierarchy should fulfil the following requirements:</p><p>• Customisable hardware to extend or modify elements of the memory hierarchy • Measurement of the overall performance and counting individual accesses on shared resources • Independence of CPU architectures • Scalable number of processor cores • Hardware cost estimation of extensions and customisations • Fast response on functional correctness of the implementation • Fast and approximate evaluation of the simulated model • Accurate full-system evaluation on an FPGA These requirements are satisfied by our proposed framework, for which the Chipyard project provides a promising foundation. It is the predestined choice, since it is built around the open RISC-V ecosystem, and allows to customize or replace individual elements of the memory hierarchy. It further supports simulation and FPGA synthesis based on the same and identical code.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">Overview of the Framework</head><p>The evaluation framework builds upon existing open-source projects that have been developed in recent years around the prevalent RISC-V architecture.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1.">Chipyard</head><p>Chipyard <ref type="bibr" target="#b8">[9]</ref> simplifies the process of designing full-system hardware by integrating all necessary parts from CPU cores to supplementing logic to connect the devices of an FPGA evaluation board. Fig. <ref type="figure" target="#fig_0">1</ref> illustrates the individual parts of Chipyard: Processor cores can be created for example with the Rocket Chip Generator, which generates configurable and customizable cores that implement the RISC-V instruction set, either in-order Rocket cores, or the more complex and powerful out-of-order BOOM cores. Beside the L1 caches provided by the Rocket Chip Generator, secondary level caches and different kinds of interconnecting buses can be generated. There is also code provided to connect to and communicate with peripheral devices like UART and JTAG.</p><p>The generated Verilog code can be further compiled with Verilator for a simulation of the overall system, or with FireSim, which additionally allows to simulate DDR3 main memory. Alternatively, individual FPGA shells wrap the code with a harness to connect the units of the SoC to I/O pins of a concrete FPGA, to build a prototype running on an FPGA evaluation board. Such prototype is able to communicate with the built-in peripheral devices like UART and JTAG, as well as the off-chip DDR memory.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2.">Rocket Chip Generator</head><p>The Rocket Chip Generator <ref type="bibr" target="#b9">[10]</ref> produces designs of a SoC with multiple processor cores, a memory hierarchy, and interconnects. Fig. <ref type="figure">2</ref> depicts a generated chip with four processor tiles, consisting of an in-order Rocket RISC-V core and L1 instruction and data caches, L2 cache banks with the memory bus, and additional buses for peripheral devices, DMA devices, and control units like the boot ROM and interrupt controllers. All processor tiles and all individual buses are connected through a shared system bus, which is typically implemented as a crossbar, but can also be configured as a ring bus.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.3.">Memory Hierarchy Evaluation Framework</head><p>A common objective of research on memory hierarchies for real-time systems is to reduce interferences on shared resources. From this, the main elements of the system under evaluation are derived: All units that control access to shared resources, like the peripheral bus, or the L2 cache, are of interest, as well as the private L1 caches that are connected to the shared system bus. In Fig. <ref type="figure">3</ref>, these elements are shown below the processor cores, which are not of special interest for interference analysis. All accesses to shared resources that originate in the cores have to pass through the L1 instruction or data caches, which can control the communication.</p><p>The prototyping flow from implementing a design of one or more specific parts of the memory hierarchy to code generation and simulation or evaluation is depicted in Fig. <ref type="figure">4</ref> provide fast checks of the functional correctness of the implemented or modified mechanisms.</p><p>After passing these tests, Verilog code is generated, which can be simulated with Verilator to test the design with a set of benchmarks. The simulation provides fast feedback on the behaviour of the system, to compare different potential implementations before running the full evaluation of the synthesised bitstream on the FPGA. The evaluation of the design on the FPGA provides accurate timing measurements of the individual tasks, and a trace log of accesses on shared resources. These results allow to quantify the improvements of the implemented memory hierarchy modifications, and enable the detection of timing violations or forbidden  interferences that should not occur.</p><p>The possibility to connect a debugger to the simulation, as well as to the system on the FPGA, facilitates the detection of implementation faults, and provides detailed insight into the behaviour of the system under specific circumstances when needed.</p><p>With the feedback loop between the design and the simulation, available computational capabilities can be leveraged to compare numerous different design variations, to select a few designs of interest for the full evaluation of the FPGA.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.">Conclusion &amp; Future Work</head><p>This paper described the design of a prototyping and evaluation framework to research on memory hierarchies, for getting closer to the overall objective of enabling high-performance multicore processors in embedded real-time systems. The framework is built upon existing open-source projects around the RISC-V architecture, connecting the different tools together. It integrates all the required steps to automatically generate the Verilog code, compile and run the simulation, to synthesise the bitstream and program the FPGA with it, and to run the evaluation.</p><p>The next step is to implement the basic tool chain for automatic unit tests, code generation, simulation, and synthesis. Afterwards, measurement facilities in the individual components of the memory hierarchy have to be added to evaluate the behaviour of the system under parallel workloads. Such workloads first have to be identified based on use-cases from different industries, and reconstructed by a set of different benchmarks.</p><p>Based upon the proposed framework, research on new approaches for controlling interferences on shared resources within shared-memory multicores can take off.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figure 1 :</head><label>1</label><figDesc>Figure 1: Overview of generators of Chipyard [9]. The resulting code can be synthesised for an FPGA or simulated.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figure 3 :Figure 4 :</head><label>34</label><figDesc>Figure 3:Elements of interest to evaluate interferences in the memory hierarchy: private L1 caches, shared L2 caches, buses that connect shared resources, and the shared system bus itself.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head></head><label></label><figDesc>. Unit tests can The Rocket Chip<ref type="bibr" target="#b9">[10]</ref> consists of multiple processor tiles, and devices connected through dedicated buses, like memory and peripherals. All parts of the chip communicate through the system bus.</figDesc><table><row><cell>Rocket Chip</cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell>Rocket Tile</cell><cell>Rocket Tile</cell><cell cols="2">Rocket Tile</cell><cell>Rocket Tile</cell></row><row><cell>Core</cell><cell>Core</cell><cell></cell><cell>Core</cell><cell>Core</cell></row><row><cell>L1I L1D</cell><cell cols="2">L1I L1D</cell><cell>L1I L1D</cell><cell>L1I L1D</cell></row><row><cell></cell><cell></cell><cell>System Bus</cell><cell></cell><cell></cell></row><row><cell>L2 Bank</cell><cell>L2 Bank</cell><cell>Periph. Bus</cell><cell>Ctrl. Bus</cell><cell>Front Bus</cell></row><row><cell cols="2">Memory Bus</cell><cell cols="2">Boot ROM, Intrs., . . .</cell><cell>DMA</cell></row><row><cell>Figure 2:</cell><cell></cell><cell></cell><cell></cell><cell></cell></row></table></figure>
		</body>
		<back>

			<div type="acknowledgement">
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Acknowledgments</head><p>This work is partially supported by the CERCIRAS COST Action no. CA19135 funded by COST.</p></div>
			</div>


			<div type="funding">
<div xmlns="http://www.tei-c.org/ns/1.0"><p>(S. Altmeyer) https://es-augsburg.de/haas (F. Haas); https://es-augsburg.de/altmeyer (S. Altmeyer) 0000-0002-4714-2562 (F. Haas); 0000-0002-2487-7144 (S. Altmeyer)</p></div>
			</div>

			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">A Survey of Timing Verification Techniques for Multi-Core Real-Time Systems</title>
		<author>
			<persName><forename type="first">C</forename><surname>Maiza</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Rihani</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">M</forename><surname>Rivas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Goossens</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Altmeyer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">I</forename><surname>Davis</surname></persName>
		</author>
		<idno type="DOI">10.1145/3323212</idno>
	</analytic>
	<monogr>
		<title level="j">ACM Comput. Surv</title>
		<imprint>
			<biblScope unit="volume">52</biblScope>
			<date type="published" when="2019">2019</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Virtual timing isolation for mixed-criticality systems</title>
		<author>
			<persName><forename type="first">J</forename><surname>Freitag</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Uhrig</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Ungerer</surname></persName>
		</author>
		<idno type="DOI">10.4230/LIPIcs.ECRTS.2018.13</idno>
	</analytic>
	<monogr>
		<title level="m">Euromicro Conference on Real-Time Systems (ECRTS)</title>
				<imprint>
			<date type="published" when="2018">2018</date>
			<biblScope unit="volume">13</biblScope>
			<biblScope unit="page">23</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">MemGuard: Memory Bandwidth Reservation System for Efficient Performance Isolation in Multi-core Platforms</title>
		<author>
			<persName><forename type="first">H</forename><surname>Yun</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Yao</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Pellizzoni</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Caccamo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Sha</surname></persName>
		</author>
		<idno type="DOI">10.1109/RTAS.2013.6531079</idno>
	</analytic>
	<monogr>
		<title level="m">Real-Time and Embedded Technology and Applications Symposium (RTAS)</title>
				<imprint>
			<date type="published" when="2013">2013</date>
			<biblScope unit="page" from="55" to="64" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Fault-Tolerant Execution on COTS Multi-core Processors with Hardware Transactional Memory Support</title>
		<author>
			<persName><forename type="first">F</forename><surname>Haas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Weis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Ungerer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Pokam</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Wu</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-319-54999-6_2</idno>
	</analytic>
	<monogr>
		<title level="m">Architecture of Computing Systems (ARCS)</title>
				<imprint>
			<date type="published" when="2017">2017</date>
			<biblScope unit="page" from="16" to="30" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<monogr>
		<title level="m" type="main">Fault-tolerant Execution of Parallel Applications on x86 Multi-core Processors with Hardware Transactional Memory</title>
		<author>
			<persName><forename type="first">F</forename><surname>Haas</surname></persName>
		</author>
		<ptr target="https://opus.bibliothek.uni-augsburg.de/opus4/59566" />
		<imprint>
			<date type="published" when="2019">2019</date>
		</imprint>
		<respStmt>
			<orgName>Universität Augsburg</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">Phd thesis</note>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Redundant Execution on Heterogeneous Multi-cores Utilizing Transactional Memory</title>
		<author>
			<persName><forename type="first">R</forename><surname>Amslinger</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Weis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Piatka</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Haas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Ungerer</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-319-77610-1_12</idno>
	</analytic>
	<monogr>
		<title level="m">Architecture of Computing Systems (ARCS)</title>
				<imprint>
			<date type="published" when="2018">2018</date>
			<biblScope unit="page" from="155" to="167" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Investigating transactional memory for high performance embedded systems</title>
		<author>
			<persName><forename type="first">C</forename><surname>Piatka</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Amslinger</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Haas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Weis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Altmeyer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Ungerer</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-030-52794-5_8</idno>
	</analytic>
	<monogr>
		<title level="m">Architecture of Computing Systems (ARCS)</title>
				<imprint>
			<date type="published" when="2020">2020</date>
			<biblScope unit="page" from="97" to="108" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Hardware multiversioning for fail-operational multithreaded applications</title>
		<author>
			<persName><forename type="first">R</forename><surname>Amslinger</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Piatka</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Haas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Weis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Ungerer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Altmeyer</surname></persName>
		</author>
		<idno type="DOI">10.1109/SBAC-PAD49847.2020.00014</idno>
	</analytic>
	<monogr>
		<title level="m">International Symposium on Computer Architecture and High Performance Computing (SBAC-PAD)</title>
				<imprint>
			<date type="published" when="2020">2020</date>
			<biblScope unit="page" from="20" to="27" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Chipyard: Integrated Design, Simulation, and Implementation Framework for Custom SoCs</title>
		<author>
			<persName><forename type="first">A</forename><surname>Amid</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Biancolin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Gonzalez</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Grubb</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Karandikar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Liew</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Magyar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Mao</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Ou</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Pemberton</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Rigge</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Schmidt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Wright</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Zhao</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><forename type="middle">S</forename><surname>Shao</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Asanović</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Nikolić</surname></persName>
		</author>
		<idno type="DOI">10.1109/MM.2020.2996616</idno>
	</analytic>
	<monogr>
		<title level="j">IEEE Micro</title>
		<imprint>
			<biblScope unit="volume">40</biblScope>
			<biblScope unit="page" from="10" to="21" />
			<date type="published" when="2020">2020</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<monogr>
		<author>
			<persName><forename type="first">K</forename><surname>Asanovic</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Avizienis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Bachrach</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Beamer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Biancolin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Celio</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Cook</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Dabbelt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Hauser</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Izraelevitz</surname></persName>
		</author>
		<idno>UCB/EECS- 2016-17</idno>
		<title level="m">The Rocket Chip Generator</title>
				<imprint>
			<date type="published" when="2016">2016</date>
		</imprint>
		<respStmt>
			<orgName>EECS Department, University of California, Berkeley</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">Technical Report</note>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
