Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

James E. Smith 0001

dblp:17/1987-1 · DBLP profile ↗
← Back
98ranked-venue papers
26as first author
1since 2021 · last 2021
0000-0001-7908-1859ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Systems, architecture and hardware · 90 · 25 first-author · 1 since 2021Software engineering, systems software and programming languages · 34 · 8 first-author · 1 since 2021Theory of computation · 2Applied, interdisciplinary, general and emerging computing · 2 · 1 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Computer architecture, parallel and distributed computing, and storage systems
73 papers
Processor architecture and microarchitecture · 30% Integrated circuit design · 28% Memory systems · 16%
Software engineering, system software, and programming languages
10 papers
Compilers and program optimization · 66% Runtime systems and virtual machines · 34%

Topics — the 30 heaviest of 146, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Emerging computing paradigms
neuromorphic computing
0.522018
Space-Time Algebra: A Model for Neocortical Computation · ISCA 2018
Efficient digital neurons for large scale cortical architectures · ISCA 2014
Integrated circuit design › asynchronous circuit design
clockless logic
0.512021
Superconducting Computing with Alternating Logic Elements · ISCA 2021
Integrated circuit design
digital circuit design
0.512021
Superconducting Computing with Alternating Logic Elements · ISCA 2021
Integrated circuit design › superconducting logic
single flux quantum logic
0.512021
Superconducting Computing with Alternating Logic Elements · ISCA 2021
Integrated circuit design
superconducting logic
0.512021
Superconducting Computing with Alternating Logic Elements · ISCA 2021
Processor architecture and microarchitecture
superscalar processor
0.282007
Automated design of application specific superscalar processors: an analytical approach · ISCA 2007
A First-Order Superscalar Processor Model · ISCA 2004
A Trace Cache Microarchitecture and Evaluation · IEEE Trans. Computers 1999
Performance modeling and evaluation
processor performance modeling
0.232009
A mechanistic performance model for superscalar out-of-order processors · ACM Trans. Comput. Syst. 2009
A performance counter architecture for computing accurate CPI components · ASPLOS 2006
A First-Order Superscalar Processor Model · ISCA 2004
Processor architecture and microarchitecture
branch prediction
0.2102003
Hardware Support for Control Transfers in Code Caches · MICRO 2003
Control Independence in Trace Processors · MICRO 1999
Improving Branch Predictors by Correlating on Data Values · MICRO 1999
Memory systems
cache coherence
0.252008
Stealth prefetching · ASPLOS 2006
Improving Multiprocessor Performance with Coarse-Grain Coherence Tracking · ISCA 2005
Speculative Versioning Cache · IEEE Trans. Parallel Distributed Syst. 2001
Processor architecture and microarchitecture
instruction set architecture
0.252006
Reducing Startup Time in Co-Designed Virtual Machines · ISCA 2006
An approach for implementing efficient superscalar CISC processors · HPCA 2006
An Instruction Set and Microarchitecture for Instruction Level Distributed Processing · ISCA 2002
Processor architecture and microarchitecture
chip multiprocessor
0.242008
Configurable isolation: building high availability systems with commodity multi-core processors · ISCA 2007
Fair Queuing Memory Systems · MICRO 2006
Implementing high availability memory with a duplication cache · MICRO 2008
Processor architecture and microarchitecture › superscalar processor
superscalar out-of-order processor
0.132009
A mechanistic performance model for superscalar out-of-order processors · ACM Trans. Comput. Syst. 2009
A performance counter architecture for computing accurate CPI components · ASPLOS 2006
An Instruction Set and Microarchitecture for Instruction Level Distributed Processing · ISCA 2002
Memory systems › cache coherence › coherence granularity
coarse-grain coherence
0.122006
Stealth prefetching · ASPLOS 2006
Improving Multiprocessor Performance with Coarse-Grain Coherence Tracking · ISCA 2005
Memory systems › cache
prefetching
0.122006
Stealth prefetching · ASPLOS 2006
Data Cache Prefetching Using a Global History Buffer · HPCA 2004
Memory systems
cache
0.152004
Data Cache Prefetching Using a Global History Buffer · HPCA 2004
Managing Multi-Configuration Hardware via Dynamic Working Set Analysis · ISCA 2002
Cache performance in vector supercomputers · SC 1994
Emerging computing paradigms › analog computing
race logic
0.112018
Space-Time Algebra: A Model for Neocortical Computation · ISCA 2018
Processor architecture and microarchitecture
instruction-level parallelism
0.1112001
A Study of Control Independence in Superscalar Processors · HPCA 1999
Trace Processors · MICRO 1997
The microarchitecture of superscalar processors · Proc. IEEE 1995
Cloud and datacenter computing
quality of service
0.122007
Fair Queuing Memory Systems · MICRO 2006
Virtual private caches · ISCA 2007
Memory systems
DRAM
0.112008
Power-Efficient DRAM Speculation · HPCA 2008
Distributed systems › fault tolerance
high availability
0.112008
Implementing high availability memory with a duplication cache · MICRO 2008
Hardware reliability and fault tolerance › memory fault tolerance
memory redundancy
0.112008
Implementing high availability memory with a duplication cache · MICRO 2008
Processor architecture and microarchitecture › instruction fetch
trace cache
0.142000
Trace preconstruction · ISCA 2000
A Trace Cache Microarchitecture and Evaluation · IEEE Trans. Computers 1999
Trace Cache: A Low Latency Approach to High Bandwidth Instruction Fetching · MICRO 1996
Processor architecture and microarchitecture › special-purpose processor
application-specific processor design
0.112007
Automated design of application specific superscalar processors: an analytical approach · ISCA 2007
Memory systems › cache management
cache capacity management
0.112007
Virtual private caches · ISCA 2007
Memory systems
cache management
0.112007
Virtual private caches · ISCA 2007
Electronic design automation
design space exploration
0.112007
Automated design of application specific superscalar processors: an analytical approach · ISCA 2007
Hardware reliability and fault tolerance
fault containment
0.112007
Configurable isolation: building high availability systems with commodity multi-core processors · ISCA 2007
Processor architecture and microarchitecture › instruction-level parallelism
trace processor
0.131999
Control Independence in Trace Processors · MICRO 1999
Instruction Pre-Processing in Trace Processors · HPCA 1999
Trace Processors · MICRO 1997
Processor architecture and microarchitecture
instruction scheduling
0.122006
An approach for implementing efficient superscalar CISC processors · HPCA 2006
The ZS-1 Central Processor · ASPLOS 1987
Processor architecture and microarchitecture › binary translation
dynamic binary translation
0.112006
Reducing Startup Time in Co-Designed Virtual Machines · ISCA 2006

Methods — techniques the papers use, named apart from their topics

discrete-event simulation · 0.5analog circuit modeling · 0.5simulation · 0.4space-time algebra · 0.3register transfer level implementation · 0.2piecewise linear approximation · 0.2interval analysis · 0.2trace-driven simulation · 0.1analytical modeling · 0.1mechanistic modeling · 0.1hardware-software co-design · 0.1SPEC2000 benchmarking · 0.1store profiling · 0.1invalidation mechanism · 0.1NP-completeness reduction · 0.1software jump target prediction · 0.0hardware cache for translated jump targets · 0.0shared memory message queues · 0.0
YearPublicationVenuePosition
2021 Superconducting Computing with Alternating Logic Elements
abstract
Although superconducting single flux quantum (SFQ) technologies offer the potential for low-latency operation with energy dissipation of the order of attojoules per gate, their inherently pulse-driven nature and stateful cells have led to designs in which every logic gate is clocked. This means that clocked buffers must be added to equalize logic path lengths, and every gate becomes a pipeline stage. We propose a different approach, where gates are clock-free and synchronous designs have a conventional look-and-feel. Despite being clock-free, however, the gates are state machines by nature. To properly manage these state machines, the logical clock cycle is composed of two synchronous alternating phases: the first of which implements the desired function, and the second of which returns the state machines to the ground state. Moreover, to address the challenges associated with the asynchronous implementation of Boolean NOT operations in pulse-based systems, values are represented as unordered binary codes – in particular, dual-rail codes. With unordered codes, AND and OR operations are functionally complete.We demonstrate that our new approach, xSFQ, with its dual-rail construction and alternating clock phases, along with "double-pumped" logical latches and a timing optimization through latch decomposition, is capable of implementing arbitrary digital designs without gate-level pipelining and the overheads that come with it. We evaluate energy-delay trade-offs enabled by this approach through a mix of detailed analog circuit modeling, pulse-level discrete-event simulation, and high-level pipeline efficiency analysis. The resulting systems are shown to deliver energy-delay product (EDP) gains over conventional SFQ even with pipeline hazard ratios (HR) below 1%. For hazard ratios equal to 15% and 20% and a design resembling a RISC-V RV32I core (excluding the cost of interlock logic), xSFQ achieves 22x and 31x EDP savings, respectively.
Georgios Tzimpragos, Jennifer Volk, Alex Wynn, James E. Smith 0001, Timothy Sherwood
ISCA4
2018 Space-Time Algebra: A Model for Neocortical Computation
abstract
A proposed first step in replicating the computational methods used in the brain's neocortex is the development of a feedforward computing paradigm based on temporal relationships among inter-neuron voltage spikes. A "space-time" algebra captures the essential features of such a paradigm. The space-time algebra supports biologically plausible neural networks, as envisioned by theoretical neuroscientists. It also supports a generalization of previously proposed "race logic". A key feature of race logic is that it can be directly implemented with off-the-shelf CMOS digital circuits. This opens the possibility of designing brain-like neural networks in the neuroscience domain and implementing them directly in the CMOS digital circuit domain.
James E. Smith 0001
ISCA1
2014 Efficient digital neurons for large scale cortical architectures
abstract
Digital neurons are implemented with the goal of supporting research and development of architectures which implement the computational paradigm of the neocortex. Four spiking digital neurons are implemented at the register transfer level in a manner that permits side-by-side comparisons. Two of the neurons contain two stages of exponential decay, one for synapse conductances and one for membrane potential. The other two neurons contain only one stage of exponential decay for membrane potential. The two stage neurons respond to an input spike with a change in membrane potential that has a non-infinite leading edge slope; the one stage neurons exhibit a change in membrane potential with an abrupt, infinite leading edge slope. This leads to a behavioral difference when a number of input spikes occur in very close time proximity. However, the one stage neurons are as much as a factor of ten more energy efficient than the two stage neurons, as measured by the number of dynamic add-equivalent operations. A new two stage neuron is proposed. This neuron reduces the number of decay components and implements decays in both stages via piece-wise linear approximation. Together, these simplifications yield two stage neuron behavior with energy efficiency that is only about a factor of two worse than the simplest one stage neuron.
James E. Smith 0001
ISCA1
2013 The role of computer designers in reverse-engineering the brain
abstract
A truly grand challenge for science in general, and for computer architects and designers in particular, is to understand the mammalian brain's computing paradigm and then construct a computing device that embodies that paradigm. Although computer designers have a potential role to play in solving this grand challenge, it is up to us to define that role. From a computer designer's perspective, I will illustrate the current understanding of the brain's computational paradigm by describing several examples from experimental neuroscience. I will suggest an architecture hierarchy and discuss issues that arise when translating from the complex, asynchronous, electro-chemical device, which is the brain, to a synchronous digital device capable of performing computation in a similar manner. This translation presents many difficult challenges that will require science-inspired insight and discovery, added to the challenges of engineering a very large, unconventional digital system. But, as difficult as they may be, these challenges provide almost unlimited opportunities for forward-looking, risk-taking computer architects and designers.
James E. Smith 0001
ICS1
2009 A mechanistic performance model for superscalar out-of-order processors
abstract
A mechanistic model for out-of-order superscalar processors is developed and then applied to the study of microarchitecture resource scaling. The model divides execution time into intervals separated by disruptive miss events such as branch mispredictions and cache misses. Each type of miss event results in characterizable performance behavior for the execution time interval. By considering an interval's type and length (measured in instructions), execution time can be predicted for the interval. Overall execution time is then determined by aggregating the execution time over all intervals. The mechanistic model provides several advantages over prior modeling approaches, and, when estimating performance, it differs from detailed simulation of a 4-wide out-of-order processor by an average of 7%. The mechanistic model is applied to the general problem of resource scaling in out-of-order superscalar processors. First, we use the model to determine size relationships among microarchitecture structures in a balanced processor design. Second, we use the mechanistic model to study scaling of both pipeline depth and width in balanced processor designs. We corroborate previous results in this area and provide new results. For example, we show that at optimal design points, the pipeline depth times the square root of the processor width is nearly constant. Finally, we consider the behavior of unbalanced, overprovisioned processor designs based on insight gained from the mechanistic model. We show that in certain situations an overprovisioned processor may lead to improved overall performance. Designs where a processor's dispatch width is wider than its issue width are of particular interest.
Stijn Eyerman, Lieven Eeckhout, Tejas Karkhanis, James E. Smith 0001
ACM Trans. Comput. Syst.4
2008 Studying Compiler Optimizations on Superscalar Processors Through Interval Analysis
Stijn Eyerman, Lieven Eeckhout, James E. Smith 0001
HiPEAC3
2008 Power-Efficient DRAM Speculation
abstract
Power-efficient DRAM Speculation (PEDS) is a power optimization targeted at broadcast-based shared-memory multiprocessor systems that speculatively access DRAM in parallel with the broadcast snoop. Although speculatively accessing DRAM has the potential performance advantage of overlapping DRAM latency with the snoop, it wastes power for memory requests that obtain data from other processorspsila caches. PEDS takes advantage of information provided by a Region Coherence Array to identify requests that have a high likelihood of obtaining data from another processorpsilas cache, and does not access DRAM speculatively for those requests. By doing so, PEDS eliminates DRAM reads, reduces DRAM power consumption, reduces contention for DRAM resources, and increases the opportunity for DRAM power management. PEDS requires almost no additional hardware in systems that incorporate Region Coherence Arrays. Detailed simulation results show PEDS reduces average DRAM read traffic 28-32%, reduces average DRAM power dissipation 17-22%, and reduces average DRAM energy consumption 16-21%.
Nidhi Aggarwal, Jason F. Cantin, Mikko H. Lipasti, James E. Smith 0001
HPCA4
2008 Implementing high availability memory with a duplication cache
abstract
High availability systems typically rely on redundant components and functionality to achieve fault detection, isolation and fail over. In the future, increases in error rates will make high availability important even in the commodity and volume market. Systems will be built out of chip multiprocessors (CMPs) with multiple identical components that can be configured to provide redundancy for high availability. However, the 100% overhead of making all components redundant is going to be unacceptable for the commodity market, especially when all applications might not require high availability. In particular, duplicating the entire memory like the current high availability systems (e.g. NonStop and Stratus) do is particularly problematic given the fact that system costs are going to be dominated by the cost of memory. In this paper, we propose a novel technique called a duplication cache to reduce the overhead of memory duplication in CMP-based high availability systems. A duplication cache is a reserved area of main memory that holds copies of pages belonging to the current write working set (set of actively modified pages) of running processes. All other pages are marked as read-only and are kept only as a single, shared copy. The size of the duplication cache can be configured dynamically at runtime and allows system designers to trade off the cost of memory duplication with minor performance overhead. We extensively analyze the effectiveness of our duplication cache technique and show that for a range of benchmarks memory duplication can be reduced by 60-90% with performance degradation ranging from 1-12%. On average, a duplication cache can reduce memory duplication by 60% for a performance overhead of 4% and by 90% for a performance overhead of 5%.
Nidhi Aggarwal, James E. Smith 0001, Kewal K. Saluja, Norman P. Jouppi, Parthasarathy Ranganathan
MICRO2
2007 Studying Compiler-Microarchitecture Interactions through Interval Analysis
Stijn Eyerman, Lieven Eeckhout, James E. Smith 0001
PACT3
2007 Configurable isolation: building high availability systems with commodity multi-core processors
abstract
High availability is an increasingly important requirement for enterprise systems, often valued more than performance. Systems designed for high availability typically use redundant hardware for error detection and continued uptime in the event of a failure. Chip multiprocessors with an abundance of identical resources like cores, cache and interconnection networks would appear to be ideal building blocks for implementing high availability solutions on chip. However, doing so poses significant challenges with respect to error containment and faulty component replacement. Increasing silicon and transient fault rates with future technology scaling exacerbate the problem. This paper proposes a novel, cost-effective, architecture for high availability systems built from future multi-core processors. We propose a new chip multiprocessor architecture that provides configurable isolation for fault containment and component retirement, based upon cost-effective modifications to commodity designs. The design is evaluated for a state-of-the-art industrial fault model and the proposed architecture is shown to provide effective fault isolation and graceful degradation even when the failure rate is high.
Nidhi Aggarwal, Parthasarathy Ranganathan, Norman P. Jouppi, James E. Smith 0001
ISCA4
2007 Automated design of application specific superscalar processors: an analytical approach
abstract
Analytical modeling is applied to the automated design of application-specific superscalar processors. Using an analytical method bridges the gap between the size of the design space and the time required for detailed cycle-accurate simulations. The proposed design framework takes as inputs the design targets (upper bounds on execution time, area, and energy), design alternatives, and one or more application programs. The output is the set of out-of-order superscalar processors that are Pareto-optimal with respect to performance-energy-area. The core of the new design framework is made up of analytical performance and energy activity models, and an analytical model-based design optimization process.
Tejas Karkhanis, James E. Smith 0001
ISCA2
2007 Virtual private caches
abstract
Virtual Private Machines (VPM) provide a framework for Quality of Service (QoS) in CMP-based computer systems. VPMs incorporate microarchitecture mechanisms that allow shares of hardware resources to be allocated to executing threads, thus providing applications with an upper bound on execution time regardless of other thread activity. Virtual Private Caches (VPCs) are an important element of VPMs. VPC hardware consists of two major components: the VPC Arbiter, which manages shared cache bandwidth, and the VPC Capacity Manager, which manages the cache storage. Both the VPC Arbiter and VPC Capacity Manager provide minimum service guarantees that, when combined, achieve QoS for the cache subsystem. Simulation-based evaluation shows that conventional cache bandwidth management policies allow concurrently executing threads to affect each other significantly in an uncontrollable manner. The evaluation targets cache bandwidth because the effects of cache capacity sharing have been studied elsewhere. In contrast with the conventional policies, the VPC Arbiter meets its QoS performance objectives on all workloads studied and over a range of allocated bandwidth levels. The VPC Arbiter’s fairness policy, which distributes leftover bandwidth, mitigates the effects of cache preemption latencies, thus ensuring threads a high-degree of performance isolation. Furthermore, the VPC Arbiter eliminates negative bandwidth interference which can improve aggregate throughput and resource utilization.
Kyle J. Nesbit, James Laudon, James E. Smith 0001
ISCA3
2006 Stealth prefetching
abstract
Prefetching in shared-memory multiprocessor systems is an increasingly difficult problem. As system designs grow to incorporate larger numbers of faster processors, memory latency and interconnect traffic increase. While aggressive prefetching techniques can mitigate the increasing memory latency, they can harm performance by wasting precious interconnect bandwidth and prematurely accessing shared data, causing state downgrades at remote nodes that force later upgrades.This paper investigates Stealth Prefetching, a new technique that utilizes information from Coarse-Grain Coherence Tracking (CGCT) for prefetching data aggressively, stealthily, and efficiently in a broadcast-based shared-memory multiprocessor system. Stealth Prefetching utilizes CGCT to identify regions of memory that are not shared by other processors, aggressively fetches these lines from DRAM in open-page mode, and moves them close to the processor in anticipation of future references. Our analysis with commercial, scientific, and multiprogrammed workloads show that Stealth Prefetching provides an average speedup of 20% over an aggressive baseline system with conventional prefetching.
Jason F. Cantin, Mikko H. Lipasti, James E. Smith 0001
ASPLOS3
2006 A performance counter architecture for computing accurate CPI components
abstract
A common way of representing processor performance is to use Cycles per Instruction (CPI) `stacks' which break performance into a baseline CPI plus a number of individual miss event CPI components. CPI stacks can be very helpful in gaining insight into the behavior of an application on a given microprocessor; consequently, they are widely used by software application developers and computer architects. However, computing CPI stacks on superscalar out-of-order processors is challenging because of various overlaps among execution and miss events (cache misses, TLB misses, and branch mispredictions).This paper shows that meaningful and accurate CPI stacks can be computed for superscalar out-of-order processors. Using interval analysis, a novel method for analyzing out-of-order processor performance, we gain understanding into the performance impact of the various miss events. Based on this understanding, we propose a novel way of architecting hardware performance counters for building accurate CPI stacks. The additional hardware for implementing these counters is limited and comparable to existing hardware performance counter architectures while being significantly more accurate than previous approaches.
Stijn Eyerman, Lieven Eeckhout, Tejas Karkhanis, James E. Smith 0001
ASPLOS4
2006 An approach for implementing efficient superscalar CISC processors
abstract
An integrated, hardware/software co-designed CISC processor is proposed and analyzed. The objectives are high performance and reduced complexity. Although the x86 ISA is targeted, the overall approach is applicable to other CISC ISAs. To provide high performance on frequently executed code sequences, fully transparent dynamic translation software decomposes CISC superblocks into RISC-style micro-ops. Then, pairs of dependent micro-ops are reordered and fused into macro-ops held in a large, concealed code cache. The macro-ops are fetched from the code cache and processed throughout the pipeline as single units. Consequently, instruction level communication and management are reduced, and processor resources such as the issue buffer and register file ports are better utilized. Moreover, fused instructions lead naturally to pipelined instruction scheduling (issue) logic, and collapsed 3-1 ALUs can be used, resulting in much simplified result forwarding logic. Steady state performance is evaluated for the SPEC2000 benchmarks, and a proposed x86 implementation with complexity similar to a two-wide superscalar processor is shown to provide performance (instructions per cycle) that is equivalent to a conventional four-wide superscalar processor.
Shiliang Hu, Ilhyun Kim, Mikko H. Lipasti, James E. Smith 0001
HPCA4
2006 Reducing Startup Time in Co-Designed Virtual Machines
abstract
A Co-Designed Virtual Machine allows designers to implement a processor via a combination of hardware and software. Dynamic binary translation converts code written for a conventional (legacy) ISA into optimized code for an underlying implementation-specific ISA. Because translation is done dynamically, an important consideration in such systems is the startup time for performing the initial translations. Beginning with a previously proposed co-designed VM that implements the x86 ISA, we study runtime binary translation overhead effects. The co-designed x86 virtual machine is based on an adaptive translation system that uses a basic block translator for initial emulation and a superblock translator for hotspot optimization. We analyze and model VM startup performance via simulation. We observe that non-hotspot emulation via basic block translation is the major part of the startup overhead. To reduce startup translation overhead, we follow the co-designed hardware / software philosophy and propose hardware assists to dramatically accelerate basic block translations. By combining hardware assists with balanced translation strategies, the co-designed translation system reduces runtime overhead significantly and demonstrates very competitive startup performance when compared with conventional processors running a set of Windows application benchmarks.
Shiliang Hu, James E. Smith 0001
ISCA2
2006 Characterizing the branch misprediction penalty
abstract
Despite years of study, branch mispredictions remain as a significant performance impediment in pipelined superscalar processors. In general, the branch misprediction penalty can be substantially larger than the frontend pipeline length (which is often equated with the misprediction penalty). We identify and quantify five contributors to the branch misprediction penalty: (i) the frontend pipeline length, (ii) the number of instructions since the last miss event (branch misprediction, I-cache miss, long D-cache miss)-this is related to the burstiness of miss events, (iii) the inherent ILP of the program, (iv) the functional unit latencies, and (v) the number of short (LI) D-cache misses. The characterizations done in this paper are driven by 'interval analysis', an analytical approach that models superscalar processor performance as a sequence of inter-miss intervals.
Stijn Eyerman, James E. Smith 0001, Lieven Eeckhout
ISPASS2
2006 Fair Queuing Memory Systems
abstract
We propose and evaluate a multi-thread memory scheduler that targets high performance CMPs. The proposed memory scheduler is based on concepts originally developed for network fair queuing scheduling algorithms. The memory scheduler is fair and provides quality of service (QoS) while improving system performance. On a four processor CMP running workloads containing a mix of applications with a range of memory bandwidth demands, the proposed memory scheduler provides QoS to all of the threads in all of the workloads, improves system performance by an average of 14% (41% in the best case), and reduces the variance in the threads' target memory bandwidth utilization from .2 to .0058
Kyle J. Nesbit, Nidhi Aggarwal, James Laudon, James E. Smith 0001
MICRO4
2005 Value Compression for Efficient Computation
Ramon Canal, Antonio González 0001, James E. Smith 0001
Euro-Par3
2005 Improving Multiprocessor Performance with Coarse-Grain Coherence Tracking
abstract
To maintain coherence in conventional shared-memory multiprocessor systems, processors first check other processors' caches before obtaining data from memory. This coherence checking adds latency to memory requests and leads to large amounts of interconnect traffic in broadcast-based systems. Our results for a set of commercial, scientific and multiprogrammed workloads show that on average 67% (and up to 94%) of broadcasts are unnecessary. Coarse-grain coherence tracking is a new technique that supplements a conventional coherence mechanism and optimizes the performance of coherence enforcement. The coarse-grain coherence mechanism monitors the coherence status of large regions of memory, and uses that information to avoid unnecessary broadcasts. Coarse-grain coherence tracking is shown to eliminate 55-97% of the unnecessary broadcasts, and improve performance by 8.8% on average (and up to 21.7%).
Jason F. Cantin, Mikko H. Lipasti, James E. Smith 0001
ISCA3
2005 Runtime specialization with optimistic heap analysis
abstract
We describe a highly practical program specializer for Java programs. The specializer is powerful, because it specializes optimistically, using (potentially transient) constants in the heap; it is precise, because it specializes using data structures that are only partially invariant; it is deployable, because it is hidden in a JIT compiler and does not require any user annotations or offline preprocessing; it is simple, because it uses existing JIT compiler ingredients; and it is fast, because it specializes programs in under 1s.These properties are the result of (1) a new algorithm for selecting specializable code fragments, based on a notion of influence; (2) a precise store profile for identifying constant heap locations; and (3) an efficient invalidation mechanism for monitoring optimistic assumptions about heap constants. Our implementation of the specializer in the Jikes RVM has low overhead, selects specialization points that would be chosen manually, and produces speedups ranging from a factor of 1.2 to 6.4, comparable with annotation-guided specializers.
Ajeet Shankar, S. Subramanya Sastry, Rastislav Bodík, James E. Smith 0001
OOPSLA4
2005 A unified view of virtualization
abstract
Virtualization technologies have been developed by a number of computer science and engineering disciplines, sometimes independently, often by different groups and at different times. Not surprisingly, these groups each view virtualization as a sub-discipline, so it is studied in a fragmented way. In the future, however, virtualization will become an essential part of all computer systems by providing smart interconnection mechanisms for the three major system components - application software, system software, and hardware. Consequently, the study of virtualization technologies will become a discipline in its own right and will stand on equal footing with the other major areas of computer systems design.
James E. Smith 0001
VEE1
2005 The Complexity of Verifying Memory Coherence and Consistency
abstract
The problem of testing shared memories for memory coherence and consistency is studied. First, it is proved that detecting violations of coherence in an execution is NP-complete, and it remains NP-complete for a number of restricted instances. This result leads to a proof that all known consistency models are NP-hard to verify. The complexity of verifying consistency models is not a mere consequence of coherence, and verifying sequential consistency remains NP-complete even after coherence has been verified.
Jason F. Cantin, Mikko H. Lipasti, James E. Smith 0001
IEEE Trans. Parallel Distributed Syst.3
2004 Software-Controlled Operand-Gating
abstract
Operand gating is a technique for improving processor energy efficiency by gating off sections of the data path that are unneeded by short-precision (narrow) operands. A method for implementing software-controlled power gating is proposed and evaluated. The instruction set architecture (ISA) is enhanced to include opcodes that specify operand widths (if not already included in the ISA). A compiler or a binary translator uses statically available information to determine initial value ranges. The technique is enhanced through a profile-based analysis that results in the specialization of certain code regions for a given value range. After the analysis, instruction opcodes are assigned using the minimum required width. To evaluate this technique the Alpha instruction set is enhanced to include opcodes for 8, 16, and 32 bit operands. Applying the proposed software technique to the Speclnt95 benchmarks results in energy-delay savings of 14%. When combined with previously proposed hardware-based techniques, the energy-delay benefit is 28%.
Ramon Canal, Antonio González 0001, James E. Smith 0001
CGO3
2004 Using Dynamic Binary Translation to Fuse Dependent Instructions
abstract
Instruction scheduling hardware can be simplified and easily pipelined if pairs of dependent instructions are fused so they share a single instruction scheduling slot. We study an implementation of the x86 ISA that dynamically translates x86 code to an underlying ISA that supports instruction fusing. A microarchitecture that is codesigned with the fused instruction set completes the implementation. We focus on the dynamic binary translator for such a codesigned x86 virtual machine. The dynamic binary translator first cracks x86 instructions belonging to hot superblocks into RISC-style microoperations, and then uses heuristics to fuse together pairs of dependent microoperations. Experimental results with SPEC2000 integer benchmarks demonstrate that: (1) the fused ISA with dynamic binary translation reduces the number of scheduling decisions by about 30% versus a conventional implementation that uses hardware cracking into RISC microoperations; (2) an instruction scheduling slot needs only hold two source register fields even though it may hold two instructions; (3) translations generated in the proposed ISA consume about 30% less storage than a corresponding fixed-length RISC-style ISA.
Shiliang Hu, James E. Smith 0001
CGO2
2004 Data Cache Prefetching Using a Global History Buffer
abstract
A new structure for implementing data cache prefetching is proposed and analyzed via simulation. The structure is based on a Global History Buffer that holds the most recent miss addresses in FIFO order. Linked lists within this global history buffer connect addresses that have some common property, e.g. they were all generated by the same load instruction. The Global History Buffer can be used for implementing a number of previously proposed prefetch methods, as well as new ones. Prefetching with the Global History Buffer has two significant advantages over conventional table prefetching methods. First, the use of a FIFO history buffer can improve the accuracy of correlation prefetching by eliminating stale data from the table. Second, the Global History Buffer contains a more complete (and intact) picture of cache miss history, creating opportunities to design more effective prefetching methods. Global History Buffer prefetching can increase correlation prefetching performance by 20% and cut its memory traffic by 90%. Furthermore, the Global History Buffer can make correlations within a load’s address stream, which can increase stride prefetching performance by 6%. Collectively, the Global History Buffer prefetching methods perform as well or better than the conventional prefetching methods studied on 14 of 15 benchmarks.
Kyle J. Nesbit, James E. Smith 0001
HPCA2
2004 Tuning Reconfigurable Microarchitectures for Power Efficiency
abstract
Summary form only given. Modern microprocessors are designed with a fixed set of microarchitected resources. On the other hand, program resource requirements are known to vary across programs and even within a program as it goes through different phases of execution. This mismatch between the design and program requirements often leads to suboptimal power and/or performance. We present an adaptive microarchitecture that tailors itself dynamically to match changing program requirements. The goal of adaptation in this work is to achieve power efficiency without suffering significant performance degradation. The microarchitecture employs four multiconfiguration units nstruction cache, data cache, unified L2 cache and branch predictor along with light weight profiling hardware and sophisticated tuning algorithms. The profiling hardware collects working set signatures using a simple hash function and sparse sampling in order to reduce profiling hardware complexity. The tuning algorithms use these signatures to accurately detect program phase changes and decouple the tuning of each unit using a novel technique. Detailed simulations show that the best performing algorithm achieves subthreshold leakage power reductions as high as 76% for instruction cache, 46% for data cache, 63% for L2 cache and 73% for the branch predictor in the benchmarks studied. On average, the algorithm leads to 1.1% performance degradation while achieving 44%, 17%, 19%, and 28% reduction in subthreshold leakage power for instruction cache, data cache, L2 cache and branch predictor, respectively.
Ashutosh S. Dhodapkar, James E. Smith 0001
IPDPS2
2004 A First-Order Superscalar Processor Model
abstract
A proposed performance model for superscalar processors consists of: 1) a component that models the relationship between instructions issued per cycle and the size of the instruction window under ideal conditions; and 2) methods for calculating transient performance penalties due to branch mispredictions, instruction cache misses, and data cache misses. Using trace-derived data dependence information, data and instruction cache miss rates, and branch miss-prediction rates as inputs, the model can arrive at performance estimates for a typical superscalar processor that are within 5.8% of detailed simulation on average and within 13% in the worst case. The model also provides insights into the workings of superscalar processors and long-term microarchitecture trends such as pipeline depths and issue widths.
Tejas Karkhanis, James E. Smith 0001
ISCA2
2004 The future of simulation: A field of dreams
abstract
Quantitative evaluation of next-generation computer architectures and processor enhancements is possible only by running simulations. However, since the insights that are gained through simulation are predicated on the accuracy of the simulation results, and since the design decisions for future processor architectures -- which cost billions of dollars to design and implement -- are based on those insights, periodic examination of the simulation process becomes a necessity, rather than a luxury. Accordingly, this panel discusses the deficiencies of existing simulators, benchmarks, and simulation methodologies and techniques, and, in addition, what future directions are available for each.
Brad Calder, Daniel Citron, Yale N. Patt, James E. Smith 0001
ISPASS4
2003 Dynamic Binary Translation for Accumulator-Oriented Architectures
abstract
A dynamic binary translation system for a co-designed virtual machine is described and evaluated. The underlying hardware directly executes an accumulator-oriented instruction set that exposes instruction dependence chains (strands) to a distributed microarchitecture containing a simple instruction pipeline. To support conventional program binaries, a source instruction set (Alpha in our study) is dynamically translated to the target accumulator instruction set. The binary translator identifies chains of inter-instruction dependences and assigns them to dependence-carrying accumulators. Because the underlying superscalar microarchitecture is capable of dynamic instruction scheduling, the binary translation system does not perform aggressive optimizations or re-schedule code; this significantly reduces binary translation overhead. Detailed timing simulation of the dynamically translated code running on an accumulator-based distributed microarchitecture shows the overall system is capable of achieving similar performance to an ideal out-of-order superscalar processor, ignoring the significant clock frequency advantages that the accumulator-based hardware is likely to have. As part of the study, we evaluate an instruction set modification that simplifies precise trap implementation. This approach significantly reduces the number of instructions required for register state copying, thereby improving performance. We also observe that translation chaining methods can have substantial impact on the performance, and we evaluate a number of chaining methods.
Ho-Seop Kim, James E. Smith 0001
CGO2
2003 Keynote: Is there anything more to learn about high performance processors?
abstract
The talk will begin with a historical discussion of innovations in processor architecture. In every case, the innovations that define current processors were actually developed decades ago. An important issue, then, is whether there are any new techniques waiting to be discovered. In order to continue making significant performance gains, a number of obstacles must be simultaneously overcome. These obstacles are described using an analytical performance model. The potential of a number of actively researched techniques will then be considered; these include deep pipelines, speculative multi-threading, and next-generation branch prediction. Finally, in light of the history, obstacles, and available techniques, the potential and direction of future innovations will be discussed.
James E. Smith 0001
ICS1
2003 Comparing Program Phase Detection Techniques
abstract
Detecting program phase changes accurately is an important aspect of dynamically adaptable systems. Three dynamic program phase detection techniques are compared - using instruction working sets, basic block vectors (BBV), and conditional branch counts. Because program phases are difficult to define, we compare the techniques using a variety of metrics. BBV techniques perform better than the other techniques providing higher sensitivity and more stable phases. However, the instruction working set technique yields 30% longer phases than the BBV method, although there is less stability within phases. On average, the methods agree on phase changes 85% of the time. Of the 15% of time they disagree, the BBV method is more efficient at detecting performance changes. The conditional branch counter technique provides good sensitivity, but is less effective at detecting major phase changes. Nevertheless, the branch counter technique correlates 83% of the time with the BBV based technique. As an auxiliary result, we show that techniques based on procedure granularities do not perform as well as those based on instruction or basic block granularities. This is mainly due to their inability to detect changes within procedures.
Ashutosh S. Dhodapkar, James E. Smith 0001
MICRO2
2003 Hardware Support for Control Transfers in Code Caches
abstract
Many dynamic optimization and/or binary translation systems hold optimize/translated superblocks in a code cache. Conventional code caching systems suffer from overheads when control is transferred form one cached superblock to another, especially via register-indirect jumps. The basic problem is that instruction addresses in the code cache are different from those in the original program binary. Therefore, performance for register-indirect jumps depends on the ability to translate efficiently from source binary PC values to code cache PC values. We analyze several key aspects of superblock chaining and find that a conventional baseline code cache with software jump target prediction results in 14.6% IPC loss versus the original binary. We identify the inability to use a conventional return address stack as the most significant performance limiter in code cache systems. We introduce a modified software prediction technique that reduces the IPC loss to 11.4%. This technique is based on a technique used in threaded code interpreters. A number of hardware mechanisms, including a specialized return address stack and a hardware cache for translated jump target addresses, are studied for efficiently supporting register-indirect jumps. Once all the chaining overheads are removed by these support mechanisms, a superblock-based code cache improves performance due to a better branch prediction rate, improved I-cache locality, and increased chances of straight-line fetches. Simulation results show a 7.7% IPC improvement over a current generation 4-way superscalar processor.
Ho-Seop Kim, James E. Smith 0001
MICRO2
2003 The complexity of verifying memory coherence
abstract
The general problem of verifying coherence for shared-memory multiprocessor executions is NP-Complete. Verifying memory consistency models is therefore NP-Hard, because memory consistency models require coherence for some or all operations. However, verifying memory consistency remains NP-Complete for executions known to be coherent.
Jason F. Cantin, Mikko H. Lipasti, James E. Smith 0001
SPAA3
2002 Dual path instruction processing
abstract
The reasons for performance losses due to conditional branch mispredictions are first studied. Branch misprediction penalties are broken into three categories: pipeline-fill penalty, window-fill penalty, and serialization penalty. The first and third of these produce most of the performance loss, but the second is also significant. Previously proposed dual (or multi) path execution methods attempt to reduce all three penalties, but these methods are also quite complex. Most of the complexity is caused by simultaneously executing instructions from multiple paths. A good
Juan L. Aragón, José González 0002, Antonio González 0001, James E. Smith 0001
ICS4
2002 Managing Multi-Configuration Hardware via Dynamic Working Set Analysis
abstract
Microprocessors are designed to provide good average performance over a variety of workloads. This can lead to inefficiencies both in power and performance for individual programs and during individual phases within the same program. Microarchitectures with multiconfiguration units (e.g. caches, predictors, instruction windows) are able to adapt dynamically to program behavior and enable/disable resources as needed. A key element of existing configuration algorithms is adjusting to program phase changes. This is typically done by "tuning" when a phase change is detected - i.e. sequencing through a series of trial configurations and selecting the best. Algorithms that dynamically collect and analyze program working set information are studied. To make this practical, we propose working. set signatures - highly compressed working set representations (e.g. 32-128 bytes total). Algorithms use working set signatures to 1) detect working set changes and trigger re-tuning; 2) identify recurring working sets and re-install saved optimal reconfigurations, thus avoiding the time-consuming tuning process; 3) estimate working set sizes to configure caches directly to the proper size, also avoiding the tuning process. Multi-configuration instruction caches are used to demonstrate the performance of the proposed algorithms. When applied to reconfigurable instruction caches, an algorithm that identifies recurring phases achieves power savings and performance similar to the best algorithm reported to date, but with orders-of-magnitude savings in the number of re-tunings.
Ashutosh S. Dhodapkar, James E. Smith 0001
ISCA2
2002 An Instruction Set and Microarchitecture for Instruction Level Distributed Processing
abstract
An instruction set architecture (ISA) suitable for future microprocessor design constraints is proposed. The ISA has hierarchical register files with a small number of accumulators at the top. The instruction stream is divided into chains of dependent instructions (strands) where intra-strand dependences are passed through the accumulator. The general-purpose register file is used for communication between strands and for holding global values that have many consumers. A microarchitecture to support the proposed ISA is proposed and evaluated. The microarchitecture consists of multiple, distributed processing elements. Each PE contains an instruction issue FIFO, a local register (accumulator) and local copy! of register file. The overall simplicity, hierarchical value communication, and distributed implementation will provide a very high clock speed and a relatively short pipeline while maintaining a form of superscalar out-of-order execution. Detailed timing simulations using translated program traces show the proposed microarchitecture is tolerant of global wire latencies. Ignoring the significant clock frequency advantages, a microarchitecture that supports a 4-wide fetch/decode pipeline, 8 serial PEs, and a two-cycle inter-PE communication latency performs as well as a conventional 4-way out-of-order superscalar processor.
Ho-Seop Kim, James E. Smith 0001
ISCA2
2002 Saving energy with just in time instruction delivery
abstract
Just-In-Time instruction delivery is a general method for saving energy in a microprocessor by dynamically limiting the number of in-flight instructions. The goal is to save energy by 1) fetching valid instructions no sooner than necessary, avoiding cycles stalled in the pipeline -- especially the issue queue, and 2) reducing the number of fetches and subsequent processing of mis-speculated instructions. A simple algorithm monitors performance and adjusts the maximum number of in-flight instructions at fairly long intervals, 100K instructions in this study. The proposed JIT instruction delivery scheme provides the combined benefits of more targeted schemes proposed previously. With only a 3% performance degradation, energy savings in the fetch, decode pipe, and issue queue are 10%, 12%, and 40%, respectively.
Tejas Karkhanis, James E. Smith 0001, Pradip Bose
ISLPED2
2001 Rapid profiling via stratified sampling
abstract
Sophisticated binary translators and dynamic optimizers demand a program profiler with low overhead, high accuracy, and the ability to collect a variety of profile types. A profiling scheme that achieves these goals is proposed. Conceptually, the hardware compresses a stream of profile data by counting identical events; the compressed profile dam is passed to software for analysis. Compressing the high-bandwidth event stream greatly reduces software overhead. Because optimizations can tolerate some profiling errors, we allow the stream compressor to be lossy, thereby enabling a low-cost sampling-based hardware design. Because the hardware compressor is insensitive to the event content, it supports various profile types and can process multiple types simultaneously.
S. Subramanya Sastry, Rastislav Bodík, James E. Smith 0001
ISCA3
2001 Speculative Versioning Cache
abstract
Dependences among loads and stores whose addresses are unknown hinder the extraction of instruction level parallelism during the execution of a sequential program. Such ambiguous memory dependences can be overcome by memory dependence speculation which enables a load or store to be speculatively executed before the addresses of all preceding loads and stores are known. Furthermore, multiple speculative stores to a memory location create multiple speculative versions of the location. Program order among the speculative versions must be tracked to maintain sequential semantics. A previously proposed approach, the Address Resolution Buffer (ARB) uses a centralized buffer to support speculative versions. Our proposal, called the Speculative Versioning Cache (SVC), uses distributed caches to eliminate the latency and bandwidth problems of the ARB. The SVC conceptually unifies cache coherence and speculative versioning by using an organization similar to snooping bus-based coherent caches. Our evaluation for the Multiscalar architecture shows that hit latency is an important factor affecting performance and private cache solutions trade-off hit rate for hit latency.
T. N. Vijaykumar, Sridhar Gopal, James E. Smith 0001, Gurindar S. Sohi
IEEE Trans. Parallel Distributed Syst.3
2000 Instruction Level Distributed Processing
James E. Smith 0001
HiPC1
2000 Trace preconstruction
abstract
Trace caches enable high bandwidth, low latency instruction supply, but have a high miss penalty and relatively large working sets. Consequently, their performance may suffer due to capacity and compulsory misses. Trace preconstruction augments a trace cache by performing a function analogous to prefetching. The trace preconstruction mechanism observes the processor's instruction dispatch stream to detect opportunities for jumping ahead of the processor. After doing so, the preconstruction mechanism fetches static instructions from the predicted future region of the program, and constructs a set of traces in advance of when they are needed.
Quinn Jacobson, James E. Smith 0001
ISCA2
2000 Vector instruction set support for conditional operations
abstract
Vector instruction sets are receiving renewed interest because of their applicability to multimedia. Current multimedia instruction sets use short vectors with SIMD implementations, but long vector, pipelined implementations have a number of advantages and are a logical next step in multimedia ISA development. Support for conditional operations (as occur in loops containing IF statements) is an important aspect of a vector ISA. Seven ISA alternatives for implementing conditional operations are systematically explored. Performance considerations are discussed through evaluation of a typical IF loop over a range of vector lengths and true conditional values. An approach using masked operations is shown to be one of the better methods, especially if its implementation is able to skip over blocks of false mask bits. Additional analyses of complex IF loops and parallel pipeline implementations support the masked operation approach. The paper concludes with a practical implementation of masked operations that skips over power-of-2-length blocks of false values. This implementation is simpler than skipping arbitrary-length blocks and provides similar performance. 1.
James E. Smith 0001, Greg Faanes, Rabin A. Sugumar
ISCA1
2000 Concurrent Garbage Collection UsingHardware-Assisted Profiling
abstract
In the presence of on-chip multithreading, a Virtual Machine (VM) implementation can readily take advantage of service threads for enhancing performance by performing tasks such as profile collection and analysis, dynamic optimization, and garbage collection concurrently with program execution. In this context, a hardware-assisted profiling mechanism is proposed. The Relational Profiling Architecture (RPA) is designed from the top down. RPA is based on a relational model similar to the relational database model. Instructions selected for profiling produce a record of information. A simple query engine examines these records for patterns, and performs simple actions on matching records.
Timothy H. Heil, James E. Smith 0001
ISMM2
2000 Very low power pipelines using significance compression
abstract
Data, addresses, and instructions are compressed by maintaining only significant bytes with two or three extension bits appended to indicate the significant byte positions. This significance compression method is integrated into a 5-stage pipeline, with the extension bits flowing down the pipeline to enable pipeline operations only for the significant bytes. Consequently, register logic and cache activity (and dynamic power) are substantially reduced. An initial trace-driven study shows reduction in activity of approximately 30-40% for each pipeline stage. Several pipeline organizations are studied. A byte serial pipeline is the simplest implementation, but suffers a CPI (cycles per instruction) increase of 79% compared with a conventional 32-bit pipeline. Widening certain pipeline stages in order to balance processing bandwidth leads to an implementation with a CPI 24% higher than the baseline 32-bit design. Finally, full-width pipeline stages with operand gating achieve a CPI within 2-6% of the baseline 32-bit pipeline.
Ramon Canal, Antonio González 0001, James E. Smith 0001
MICRO3
2000 Relational profiling: enabling thread-level parallelism in virtual machines
abstract
Virtual machine service threads can perform many tasks in parallel with program execution such as garbage collection, dynamic compilation, and profile collection and analysis. Hardware-assisted profiling is essential for providing service threads with needed information in a flexible and efficient way. A relational profiling architecture (RPA) is proposed for meeting this goal. The RPA selects particular instructions for profiling, and communicates collected information to service threads through shared memory message queues. The RPA's capabilities lead to new profiling applications, such as concurrent garbage collection. Simulations indicate that a low-cost implementation of the RPA should be able to profile four in-flight instructions simultaneously, and provide storage for eight profile records. Profiling overhead is less than 0.5% for concurrent garbage collection and edge profiling.
Timothy H. Heil, James E. Smith 0001
MICRO2
1999 Instruction Pre-Processing in Trace Processors
abstract
In trace processors, a sequential program is partitioned at run time into "traces". A trace is an encapsulation of a dynamic sequence of instructions. A processor that uses traces as the unit of sequencing and execution achieves high instruction fetch rates and can support very wide-issue execution engines. We propose a new class of hardware optimizations that transform the instructions within traces to increase the performance of trace processors. Traces are "pre-processed" to optimize the instructions for execution together. We propose three specific optimizations: instruction scheduling, constant propagation, and instruction collapsing. Together, these optimizations offer substantial performance benefit, increasing performance by up to 24%.
Quinn Jacobson, James E. Smith 0001
HPCA2
1999 A Study of Control Independence in Superscalar Processors
abstract
Control independence has been put forward as a significant new source of instruction level parallelism for future generation processors. However, its performance potential under practical hardware constraints is not known, and even less is understood about the factors that contribute to or limit the performance of control independence. Important aspects of control independence are identified and singled out for study, and a series of idealized machine models are used to isolate and evaluate these aspects. It is shown that much of the performance potential of control independence is lost due to data dependences and wasted resources consumed by incorrect control dependent instructions. Even so, control independence can close the performance gap between real and perfect branch prediction by as much as half. Next, important implementation issues are discussed and some design alternatives are given. This is followed by a more detailed set of simulations, where the key implementation features are realistically modeled. These simulations show typical performance improvements of 10-30%.
Eric Rotenberg, Quinn Jacobson, James E. Smith 0001
HPCA3
1999 Improving Branch Predictors by Correlating on Data Values
abstract
Branch predictors typically use combinations of branch PC bits and branch histories to make predictions. Recent improvements in branch predictors have come from reducing the effect of interference, i.e. multiple branches mapping to the same table entries. In contrast, the branch difference predictor (BDP) uses data values as additional information to improve the accuracy of conditional branch predictors. The BDP maintains a history of differences between branch source register operands, and feeds these into the prediction process. An important component of the BDP is a rare event predictor (REP) which reduces learning time and table interference. An REP is a cache-like structure designed to store patterns whose predictions differ from the norm. Initially, ideal interference-free predictors are evaluated to determine how data values improve correlation. Next, execution driven simulations of complete designs realize this potential. The BDP reduces the misprediction rate of five SPEC95 integer benchmarks by up to 33% compared to gshare and by up to 15% compared to Bi-Mode predictors.
Timothy H. Heil, Zak Smith, James E. Smith 0001
MICRO3
1999 Control Independence in Trace Processors
abstract
Branch mispredictions are a major obstacle to exploiting instruction-level parallelism, at least in part because all instructions after a mispredicted branch are squashed. However, instructions that are control independent of the branch must be fetched regardless of the branch outcome, and do not necessarily have to be squashed and re-executed. Control independence exists when the two paths following a branch re-converge. A trace processor microarchitecture is developed to exploit control independence and thereby reduce branch misprediction penalties. There are three major contributions: 1) Trace-level re-convergence is not guaranteed despite re-convergence at the instruction-level. Novel trace selection techniques are developed to expose control independence at the trace-level. 2) Control independence's potential complexity stems from insertion and removal of instructions from the middle of the instruction window. Trace processors manage control flow hierarchically (traces are the fundamental unit of control flow) and this results in an efficient implementation. 3) Control independent instructions must be inspected for incorrect data dependences caused by mispredicted control flow. Existing data speculation support is easily leveraged to selectively re-execute incorrect-data dependent, control independent instructions. For five of the SPEC95 integer benchmarks, control independence improves trace processor performance from 5% to 25%, and 17% on average.
Eric Rotenberg, James E. Smith 0001
MICRO2
1999 A Trace Cache Microarchitecture and Evaluation
abstract
As the instruction issue width of superscalar processors increases, instruction fetch bandwidth requirements will also increase. It will eventually become necessary to fetch multiple basic blocks per clock cycle. Conventional instruction caches hinder this effort because long instruction sequences are not always in contiguous cache locations. Trace caches overcome this limitation by caching traces of the dynamic instruction stream, so instructions that are otherwise noncontiguous appear contiguous. In this paper, we present and evaluate a microarchitecture incorporating a trace cache. The microarchitecture provides high instruction fetch bandwidth with low latency by explicitly sequencing through the program at the higher level of traces, both in terms of (1) control flow prediction acid (2) instruction supply. For the SPEC95 integer benchmarks, trace-level sequencing improves performance from 15 percent to 35 percent over an otherwise equally sophisticated, but contiguous, multiple-block fetch mechanism. Most of this performance improvement is due to the trace cache. However, for one benchmark whose performance is limited by branch mispredictions, the performance gain is almost entirely due to improved prediction accuracy.
Eric Rotenberg, Steve Bennett, James E. Smith 0001
IEEE Trans. Computers3
1998 Speculative Versioning Cache
abstract
Dependences among loads and stores whose addresses are unknown hinder the extraction of instruction level parallelism during the execution of a sequential program. Such ambiguous memory dependences can be overcome by memory dependence speculation which enables a load or store to be speculatively executed before the addresses of all preceding loads and stores are known. Furthermore, multiple speculative stores to a memory location create multiple speculative versions of the location. Program order among the speculative versions must be tracked to maintain sequential semantics. A previously proposed approach, the address resolution buffer (ARB) uses a centralized buffer to support speculative versions. Our proposal, called the speculative versioning cache (SVC), uses distributed caches to eliminate the latency and bandwidth problems of the ARB. The SVC conceptually unifies cache coherence and speculative versioning by using an organization similar to snooping bus-based coherent caches. A preliminary evaluation for the multiscalar architecture shows that hit latency is an important factor affecting performance, and private cache solutions trade-off hit rate for hit latency.
Sridhar Gopal, T. N. Vijaykumar, James E. Smith 0001, Gurindar S. Sohi
HPCA3
1998 Vector Architectures: Past, Present and Future
abstract
Vector architectures have long been the of choice for building supercomputers.They first appeared in the early aeventies and had a long period of unquestioned dominance from the time the CRAY-1 was introduced in 1976 until the the appearance of "killer micros", 'This work was supported by the Ministry of Education of Spain under
Roger Espasa, Mateo Valero, James E. Smith 0001
International Conference on Supercomputing3
1998 Modeling Program Predictability
abstract
Basic properties of program predictability-for both values and control-are defined and studied. We take the view that program predictability originates at certain points during a program's execution, flows through subsequent instructions, and then ends at other points in the program. These key components of predictability: generation, propagation, and termination; are defined in terms of a model. The model is based on a graph derived from dynamic data dependences and a predictor. Using the SPEC95 benchmarks, we analyze the predictability phenomena both separately and in combination. Examples are provided to illustrate relationships between model-based characteristics and program constructs. It is shown that most predictability derives from program control structure and immediate values, not program input data. Furthermore, most predictability originates from a relatively small number of generate points. The analysis of obtained results suggests a number of ramifications regarding predictability and its use.
Yiannakis Sazeides, James E. Smith 0001
ISCA2
1998 Exploiting Idle Floating-Point Resources for Integer Execution
abstract
In conventional superscalar microarchitectures with partitioned integer and floating-point resources, all floating-point resources are idle during execution of integer programs. Palacharla and Smith [26] addressed this drawback and proposed that the floating-point subsystem be augmented to support integer operations. The hardware changes required are expected to be fairly minimal.To exploit these idle floating resources, the compiler must identify integer code that can be profitably offloaded to the augmented floating-point subsystem. In this paper, we present two compiler algorithms to do this. The basic scheme offloads integer computation to the floating-point subsystem using existing program loads/stores for inter-partition communication. For the SPECINT95 benchmarks, we show that this scheme offloads from 5% to 29% of the total dynamic instructions to the floating-point subsystem. The advanced scheme inserts copy instructions and duplicates some instructions to further offload computation. We evaluate the effectiveness of the two schemes using timing simulation. We show that the advanced scheme can offload from 9% to 41% of the total dynamic instructions to the floating-point subsystem. In doing so, speedups from 3% to 23% are achieved over a conventional microarchitecture.
S. Subramanya Sastry, Subbarao Palacharla, James E. Smith 0001
PLDI3
1997 Control Flow Speculation in Multiscalar Processors
abstract
The multiscalar architecture executes a single sequential program following multiple flows of control. In the multiscalar hardware, a global sequencer with help from the compiler takes large steps through the program's control flow graph (CFG) speculatively, starting a new thread of control (task) at each step. This is inter-task control flow speculation. Within a task, traditional control flow speculation is used to extract instruction level parallelism. This is intra-task control flow speculation. This paper focuses on mechanisms to implement inter-task control flow speculation (task prediction) in a multi-scalar implementation. This form of speculation has fundamental differences from traditional branch prediction. We look in detail at the issues of prediction automata, history generation and target buffers. We present implementations in each of these areas that offer good accuracy, size and performance characteristics.
Quinn Jacobson, Steve Bennett, James E. Smith 0001
HPCA4
1997 Complexity-Effective Superscalar Processors
abstract
The performance tradeoff between hardware complexity and clock speed is studied. First, a generic superscalar pipeline is de-fined. Then the specific areas of register renaming, instruction win-dow wakeup and selection logic, and operand bypassing are ana-lyzed. Each is modeled and Spice simulated for feature sizes of 0:8m, 0:35m, and 0:18m. Performance results and trends are expressed in terms of issue width and window size. Our analysis in-dicates that window wakeup and selection logic as well as operand bypass logic are likely to be the most critical in the future. A microarchitecture that simplifies wakeup and selection logic is proposed and discussed. This implementation puts chains of de-pendent instructions into queues, and issues instructions from mul-tiple queues in parallel. Simulation shows little slowdown as com-pared with a completely flexible issue window when performance is measured in clock cycles. Furthermore, because only instructions at queue heads need to be awakened and selected, issue logic is simpli-fied and the clock cycle is faster – consequently overall performance is improved. By grouping dependent instructions together, the pro-posed microarchitecture will help minimize performance degrada-tion due to slow bypasses in future wide-issue machines. 1
Subbarao Palacharla, Norman P. Jouppi, James E. Smith 0001
ISCA3
1997 Out-of-Order Vector Architectures
abstract
Register renaming and out-of-order instruction issue are now commonly used in superscalar processors. These techniques can also be used to significant advantage in vector processors, as this paper shows. Performance is improved and available memory bandwidth is used more effectively. Using a trace driven simulation we compare a conventional vector implementation, based on the Convex C3400, with an out-of-order, register renaming, vector implementation. When the number of physical registers is above 12, out-of-order execution coupled with register renaming provides a speedup of 1.24-1.72 for realistic memory latencies. Out-of-order techniques also tolerate main memory latencies of 100 cycles with a performance degradation less than 6%. The mechanisms used for register renaming and out-of-order issue can be used to support precise interrupts-generally a difficult problem in vector machines. When precise interrupts are implemented, there is typically less than a 10% degradation in performance. A new technique based on register renaming is targeted at dynamically eliminating spill code; this technique is shown to provide an extra speedup ranging between 1.10 and 1.20 while reducing total memory traffic by an average of 15-20%.
Roger Espasa, Mateo Valero, James E. Smith 0001
MICRO3
1997 Path-Based Next Trace Prediction
abstract
The trace cache is proposed as a mechanism for providing increased fetch bandwidth by allowing the processor to fetch across multiple branches in a single cycle. But to date predicting multiple branches per cycle has meant paying a penalty in prediction accuracy. We propose a next trace predictor that treats the traces as basic units and explicitly predicts sequences of traces. The predictor collects histories of trace sequences (paths) and makes predictions based on these histories. The basic predictor is enhanced to a hybrid configuration that reduces performance losses due to cold starts and aliasing in the prediction table. The Return History Stack is introduced to increase predictor performance by saving path history information across procedure call/returns. Overall, the predictor yields about a 26% reduction in misprediction rates when compared with the most aggressive previously proposed, multiple branch prediction methods.
Quinn Jacobson, Eric Rotenberg, James E. Smith 0001
MICRO3
1997 Trace Processors
abstract
Traces are dynamic instruction sequences constructed and cached by hardware. A microarchitecture organized around traces is presented as a means for efficiently executing many instructions per cycle. Trace processors exploit both control flow and data flow hierarchy to overcome complexity and architectural limitations of conventional superscalar processors by (1) distributing execution resources based on trace boundaries and (2) applying control and data prediction at the trace level rather than individual branches or instructions. Three sets of experiments using the SPECInt95 benchmarks are presented. (i) A detailed evaluation of trace processor configurations: the results affirm that significant instruction-level parallelism can be exploited in integer programs (2 to 6 instructions per cycle). We also isolate the impact of distributed resources, and quantify the value of successively doubling the number of distributed elements. (ii) A trace processor with data prediction applied to inter-trace dependences: potential performance improvement with perfect prediction is around 45% for all benchmarks. With realistic prediction, gcc achieves an actual improvement of 10%. (iii) Evaluation of aggressive control flow: some benchmarks benefit from control independence by as much as 10%.
Eric Rotenberg, Quinn Jacobson, Yiannakis Sazeides, James E. Smith 0001
MICRO4
1997 The Predictability of Data Values
abstract
The predictability of data values is studied at a fundamental level. Two basic predictor models are defined: computational predictors perform an operation on previous values to yield predicted next values. Examples we study are stride value prediction (which adds a delta to a previous value) and last value prediction (which performs the trivial identity operation on the previous value). Context based predictors match recent value history (context) with previous value history and predict values based entirely on previously observed patterns. To understand the potential of value prediction we perform simulations with unbounded prediction tables that are immediately updated using correct data values. Simulations of integer SPEC95 benchmarks show that data values can be highly predictable. Best performance is obtained with context based predictors; overall prediction accuracies are between 56% and 91%. The context based predictor typically has an accuracy about 20% better than the computational predictors (last value and stride). Comparison of context based prediction and stride prediction shows that the higher accuracy of context based prediction is due to relatively few static instructions giving large improvements; this suggests the usefulness of hybrid predictors. Among different instruction types, predictability varies significantly. In general, load and shift instructions are more difficult to predict correctly, whereas add instructions are more predictable.
Yiannakis Sazeides, James E. Smith 0001
MICRO2
1996 Assigning Confidence to Conditional Branch Predictions
abstract
Many high performance processors predict conditional branches and consume processor resources based on the prediction. In some situations, resource allocation can be better optimized if a confidence level is assigned to a branch prediction; i.e. if the quantity of resources allocated is a function of the confidence level. To support such optimizations, we consider hardware mechanisms that partition conditional branch predictions into two sets: those which are accurate a relatively high percentage of the time, and those which are accurate a relatively low percentage of the time. The objective is to concentrate as many of the mispredictions as practical into a relatively small set of low confidence dynamic branches. We first study an ideal method that profiles branch predictions and sorts static branches into high and low confidence sets, depending on the accuracy with which they are dynamically predicted. We find that about 63 percent of the mispredictions can be localized to a set of static branches that account for 20 percent of the dynamic branches. We then study idealized dynamic confidence methods using both one and two levels of branch correctness history. We find that the single level method performs at least as well as the more complex two level method and is able to isolate 89 percent of the mispredictions into a set containing 20 percent of the dynamic branches. Finally, we study practical, less expensive implementations and find that they achieve most of the performance of the idealized methods.
Erik Jacobsen, Eric Rotenberg, James E. Smith 0001
MICRO3
1996 Trace Cache: A Low Latency Approach to High Bandwidth Instruction Fetching
abstract
As the issue width of superscalar processors is increased, instruction fetch bandwidth requirements will also increase. It will become necessary to fetch multiple basic blocks per cycle. Conventional instruction caches hinder this effort because long instruction sequences are not always in contiguous cache locations. We propose supplementing the conventional instruction cache with a trace cache. This structure caches traces of the dynamic instruction stream, so instructions that are otherwise noncontiguous appear contiguous. For the Instruction Benchmark Suite (IBS) and SPEC92 integer benchmarks, a 4 kilobyte trace cache improves performance on average by 28% over conventional sequential fetching. Further it is shown that the trace cache's efficient, low latency approach enables it to outperform more complex mechanisms that work solely out of the instruction cache.
Eric Rotenberg, Steve Bennett, James E. Smith 0001
MICRO3
1996 The Performance Potential of Data Dependence Speculation & Collapsing
abstract
Two hardware methods for remedying the effects of true data dependences are studied. The first method dependence speculation, is used to eliminate address generation-load dependences. This is enabled by address prediction that permits load instructions to proceed speculatively without waiting for their address operands. The second technique, dependence collapsing, is used to eliminate data dependences by combining a dependence among multiple instructions into one instruction. The potential of these techniques for improving processor performance is demonstrated via trace-driven simulation. When both techniques are used with maximum issue widths of 4, 8, 16, and 32, the overall speedups in comparison to a base instruction level parallel machine are 1.20, 1.35, 1.51, and 1.66, respectively. In general, dependence collapsing contributes the majority of the improvement in performance. Under the dependence collapsing model, 298 to 478 of the total number of instructions in a trace may be collapsed. The distance separating the collapsed instructions is nearly always less than 8. Our experimentation also suggests that further performance improvements can be achieved by incorporating mechanisms that increase the address prediction rate.
Yiannakis Sazeides, Stamatis Vassiliadis, James E. Smith 0001
MICRO3
1995 Decoupling integer execution in superscalar processors
abstract
We propose that processor hardware can be used more effectively if floating-point units are augmented to perform simple integer operations. Existing floating-point registers and datapaths are used to support these integer operations. Some integer instructions, those not used for computing addresses and accessing memory, can then be off-loaded to the floating-point units. Consequently, these integer instructions are decoupled from memory accessing, and additional instruction bandwidth is available for integer programs. This paper reports the results of a preliminary study of integer benchmark programs compiled for the SPARC architecture. The results indicate that between 10% and 39% of the instructions in the integer benchmarks can be executed in the augmented floating-point units. Furthermore, these instructions are all simple add, subtract and logical instructions.
Subbarao Palacharla, James E. Smith 0001
MICRO2
1995 The microarchitecture of superscalar processors
abstract
Superscalar processing is the latest in along series of innovations aimed at producing ever-faster microprocessors. By exploiting instruction-level parallelism, superscalar processors are capable of executing more than one instruction in a clock cycle. This paper discusses the microarchitecture of superscalar processors. We begin with a discussion of the general problem solved by superscalar processors: converting an ostensibly sequential program into a more parallel one. The principles underlying this process, and the constraints that must be met, are discussed. The paper then provides a description of the specific implementation techniques used in the important phases of superscalar processing. The major phases include: (1) instruction fetching and conditional branch processing, (2) the determination of data dependences involving register values, (3) the initiation, or issuing, of instructions for parallel execution, (4) the communication of data values through memory via loads and stores, and (5) committing the process state in correct order so that precise interrupts can be supported. Examples of recent superscalar microprocessors, the MIPS R10000, the DEC 21164, and the AMD K5 are used to illustrate a variety of superscalar methods.
James E. Smith 0001, Gurindar S. Sohi
Proc. IEEE1
1994 Cache performance in vector supercomputers
abstract
Traditional supercomputers use a flat multi-bank SRAM memory organization to supply high bandwidth at low latency. Most other computers use a hierarchical organization with a small SRAM cache and a slower, cheaper DRAM for the main memory. Such systems rely heavily on data locality for achieving optimum performance. This paper evaluates cache-based memory systems for vector supercomputers. We develop a simulation model for a cache-based version of the Cray Research C90 and use the NAS parallel benchmarks to provide a large-scale workload. We show that while caches reduce memory traffic and improve the performance of plain DRAM memory, they still lag behind cacheless SRAM. We identify the performance bottlenecks in DRAM-based memory systems and quantify their contribution to program performance degradation. We find the data fetch strategy to be a significant parameter affecting performance, we evaluate the performance of several fetch policies, and we show that small fetch sizes improve performance by maximizing the use of available memory bandwidth.>
Leonidas I. Kontothanassis, Rabin A. Sugumar, Greg Faanes, James E. Smith 0001, Michael L. Scott
SC4
1992 A Study of Partitioned Vector Register Files
abstract
The authors study partitioned video register files, where multiple vector registers are connected by a pair of buses to a set of functional units. Although less costly to implement, this alternative organization places some restrictions on accessing vector registers, thus potentially degrading processor performance. To circumvent this restrictive access, the authors develop a heuristic algorithm for assigning vector registers in a partitioned vector register file. By compiling a set of benchmarks with the proposed assignment algorithm, the authors generated data showing that the performance of this alternative register organization is comparable to that of a traditional one. Moreover, the data show that eight pairs of buses are adequate for a Cray Y-MP vector processor. If each pair of buses services two vector registers, for a total of 16, the algorithm successfully assigns 94% of the benchmark loops. Using 32 vector registers raises this percentage to 97%.>
Corinna G. Lee, James E. Smith 0001
SC2
1992 Report of the Purdue Workshop on Grand Challenges in Computer Architecture for the Support of High Performance Computing
Howard Jay Siegel, Seth Abraham, William L. Bain, Kenneth E. Batcher, Thomas L. Casavant, Doug DeGroot, Jack B. Dennis, David C. Douglas, Tse-Yun Feng, James R. Goodman, Alan Huang, Harry F. Jordan, J. Robert Jamp, Yale N. Patt, Alan Jay Smith, James E. Smith 0001, Lawrence Snyder 0001, Harold S. Stone, Russ Tuck, Benjamin W. Wah
J. Parallel Distributed Comput.16
1990 A study of scalar compilation techniques for pipelined supercomputers
abstract
This paper studies two compilation techniques for enhancing scalar performance in high-speed scientific processors: software pipelining and loop unrolling. We study the impact of the architecture (size of the register file) and of the hardware (size of instruction buffer) on the efficiency of loop unrolling. We also develop a methodology for classifying software pipelining techniques. For loop unrolling, a straightforward scheduling algorithm is shown to produce near-optimal results when not inhibited by recurrences or memory hazards. Our study indicates that the performance produced with a modified CRAY-1S scalar architecture and a code scheduler utilizing loop unrolling is comparable to the performance achieved by the CRAY-1S with a vector unit and the CFT vectorizing compiler. Finally, we show that the combination of loop unrolling and dynamic software pipelining, as implemented by a decoupled computer, substantially outperforms the vector CRAY-1S.
Shlomo Weiss, James E. Smith 0001
ACM Trans. Math. Softw.2
1989 An accurate, high speed implementation of division by reciprocal approximation
abstract
While unlimited accuracy is theoretically possible, it is very important to minimize the number of iteration steps to improve performance and/or to reduce hardware requirements. Consequently, there is an important accuracy/speed/cost tradeoff in reciprocal approximation implementations. A reciprocal approximation implementation is discussed, with special attention given to these tradeoffs. An interpolation method is used to ensure that an initial approximation, held in a ROM table, is as accurate as possible. A method for implementing the iteration steps is given. Special instructions are used so that maximum accuracy can be carried between iteration operations. For 64-b floating-point operands (53-b mantissa), a table lookup and only two iterations are required, and high accuracy is maintained. The rounded reciprocal rarely differs from a true round-to-nearest value based on an infinite precision result. When the results do differ (less than once every 1000 calculations), the difference in accuracy is shown to be less than 0.025 of a least significant bit (LSB).>
D. L. Fowler, James E. Smith 0001
IEEE Symposium on Computer Arithmetic2
1989 Restricted Fetch&Phi operations for parallel processing
abstract
This paper discusses a restricted form of the general Fetch&P operation and how the restricted form can be combined. In this restricted form, all processors participating in the combining have identical Fetch&P operations. Most applications of Fetch&P proposed in the literature satisfy the restrictions imposed. We show how this restricted form of Fetch&P allows an easy implementation of combining, especially in bus-based multiprocessors and multiprocessors with a separate synchronization memory. Applications of the proposed restricted Fetch&P operation are also considered.
Gurindar S. Sohi, James E. Smith 0001, James R. Goodman
ICS2
1988 The Astronautics ZS-1 processor
abstract
The Astronautics ZS-1 is a high speed minisupercomputer system designed for scientific and engineering applications. The ZS-1 central processor uses a decoupled architecture which splits instruction words into two streams, one for fixed-point/memory-address computation and the other for floating-point operations. The two instruction streams are then processed in parallel, with architectural queues providing communication between the streams. Pipelining is used extensively throughout the ZS-1. The combination of decoupling and pipelining provides overall, sustained performance of about one third a CRAY-XMP-1 on compiled double-precision Fortran. The authors give a description of the decoupled architecture and discuss other forms of parallelism used in the ZS-1. A discussion of static and dynamic instruction scheduling is also included.>
James E. Smith 0001, Greg Dermer, B. D. Vanderwarn, S. D. Klinger, C. M. Rozewski, D. L. Fowler, K. R. Scidmore, James Laudon
ICCD1
1987 The ZS-1 Central Processor
abstract
The Astronautics ZS-1 is a high speed, 64-bit computer system designed for scientific and engineering applications. The ZS-1 central processor uses a decoupled architecture, which splits instructions into two streams---one for fixed point/memory address computation and the other for floating point operations. The two instruction streams are then processed in parallel. Pipelining is also used extensively throughout the ZS-1.This paper describes the architecture and implementation of the ZS-1 central processor, beginning with some of the basic design objectives. Descriptions of the instruction set, pipeline structure, and virtual memory implementation demonstrate the methods used to satisfy the objectives. High performance is achieved through a combination of static (compile-time) instruction scheduling and dynamic (run-time) scheduling. Both types of scheduling are illustrated with examples.
James E. Smith 0001, Greg Dermer, B. D. Vanderwarn, S. D. Klinger, C. M. Rozewski, D. L. Fowler, K. R. Scidmore, James Laudon
ASPLOS1
1987 A Study of Scalar Compilation Techniques for Pipelined Supercomputers
abstract
This paper studies two compilation techniques for enhancing scalar performance in high-speed scientific processors: software pipelining and loop unrolling. We study the impact of the architecture (size of the register file) and of the hardware (size of instruction buffer) on the efficiency of loop unrolling. We also develop a methodology for classifying software pipelining techniques. For loop unrolling, a straightforward scheduling algorithm is shown to produce near-optimal results when not inhibited by recurrences or memory hazards. Software pipelining requires less hardware but also achieves less speedup. Finally, we show that the performance produced with a modified CRAY-1S scalar architecture and a code scheduler utilizing loop unrolling is comparable to the performance achieved by the CRAY-1S with a vector unit and the CFT vectorizing compiler.
Shlomo Weiss, James E. Smith 0001
ASPLOS2
1986 Pipelined Register-Storage Architectures
Steven R. Kunkel, James E. Smith 0001
ICPP2
1986 Optimal Pipelining in Supercomputers
abstract
This paper examines the relationship between the degree of central processor pipelining and performance. This relationship is studied in the context of modern supercomputers. Limitations due to instruction dependencies are studied via simulations of the CRAY-1S. Both scalar and vector code are studied. This study shows that instruction dependencies severely limit performance for scalar code as well as overall performance. The effects of latch overhead are then considered. The primary cause of latch overhead is the difference between maximum and minimum gate propagation delays. This causes both the skewing of data as it passes along the data path, and unintentional clock skewing due to clock fanout logic. Latch overhead is studied analytically in order to lower bound the clock period that may be used in a pipelined system. This analysis also touches on other points related to latch clocking. This analysis shows that for short pipeline segments both the Earle latch and polarity hold latch give the same clock period bound for both single-phase and multi-phase clocks. Overhead due to data skew and unintentional clock skew are each added to the CRAY-1S simulation model. Simulation results with realistic assumptions show that eight to ten gate levels per pipeline segment lead to optimal overall performance. The results also show that for short pipeline segments data skew and clock skew contribute about equally to the degradation in performance.
Steven R. Kunkel, James E. Smith 0001
ISCA2
1986 A Simulation Study of Decoupled Architecture Computers
abstract
Decoupled architectures achieve high scalar performance by cleanly splitting instruction processing into memory access and execution tasks. Several decoupled architectures have been proposed, and they all have two characteristics in common: 1) they have two separate sets of instructions, one for accessing memory and one for performing function execution. 2) The memory accessing task and the execution task communicate via architectural queues.
James E. Smith 0001, Shlomo Weiss, Nicholas Y. Pang
IEEE Trans. Computers1
1985 Implementation of Precise Interrupts in Pipelined Processors
abstract
article Free Access Share on Implementation of precise interrupts in pipelined processors Authors: James E. Smith Department of Electrical and Computer Engineering, University of Wisconsin-Madison, Madison, WI Department of Electrical and Computer Engineering, University of Wisconsin-Madison, Madison, WIView Profile , Andrew R. Pleszkun Computer Sciences Department, University of Wisconsin-Madison, Madison, WI Computer Sciences Department, University of Wisconsin-Madison, Madison, WIView Profile Authors Info & Claims ACM SIGARCH Computer Architecture NewsVolume 13Issue 3June 1985 pp 36–44https://doi.org/10.1145/327070.327125Published:01 June 1985Publication History 158citation1,608DownloadsMetricsTotal Citations158Total Downloads1,608Last 12 Months185Last 6 weeks23 Get Citation AlertsNew Citation Alert added!This alert has been successfully added and will be sent to:You will be notified whenever a record that you have chosen has been cited.To manage your alert preferences, click on the button below.Manage my AlertsNew Citation Alert!Please log in to your account Save to BinderSave to BinderCreate a New BinderNameCancelCreateExport CitationPublisher SiteeReaderPDF
James E. Smith 0001, Andrew R. Pleszkun
ISCA1
1985 Self-Diagnosis in Distributed Systems
abstract
This paper deals with computer system diagnosis that is performed by a system itself, rather than by an outside mechanism. The devices performing the diagnosis and the devices communicating diagnostic information are included in the system model and may be potentially faulty. This paper differs from previous work in several ways. A more general diagnostic model is used that permits analysis of a larger class of systems, and the diagnostic goals are more closely matched to realistic self-diagnosis problems. In addition, there are differences in assumptions regarding test invalidation and effects of faults on communication that produce greater self-diagnosibility while accurately modeling faulty system behavior.
Craig S. Holt, James E. Smith 0001
IEEE Trans. Computers2
1985 Instruction Cache Replacement Policies and Organizations
abstract
Instruction cache replacement policies and organizations are analyzed both theoretically and experimentally. Theoretical analyses are based on a new model for cache references —the loop model. First the loop model is used to study replacement policies and cache organizations. It is concluded theoretically that random replacement is better than LRU and FIFO, and that under certain circumstances, a direct-mapped or set-associative cache may perform better than a full-associative cache organization. Experimental results using instruction trace data are then given and analyzed. The experimental results indicate that the loop model provides a good explanation for observed cache performance.
James E. Smith 0001, James R. Goodman
IEEE Trans. Computers1
1984 Instruction Issue Logic for Pipelined Supercomputers
abstract
Abs~t
Shlomo Weiss, James E. Smith 0001
ISCA2
1984 On Separable Unordered Codes
abstract
Unordered codes have proven useful for designing failsafe, fault-secure, and self-checking logic circuits. In many applications it may be desirable to have separate information bits and check bits, i.e., a separable code. This correspondence gives a procedure for adding check bits to a set of information k-tuples to produce an unordered code. The general case where not all 2kpossible k-tuples are used is considered. For an arbitrary set of k-tuples, the minimum number of check bits is shown.
James E. Smith 0001
IEEE Trans. Computers1
1984 Instruction Issue Logic in Pipelined Supercomputers
abstract
Basic principles and design tradeoffs for control of pipelined processors are first discussed. We concentrate on register-register architectures like the CRAY-1 where pipeline control logic is localized to one or two pipeline stages and is referred to as "instruction issue logic." Design tradeoffs are explored by giving designs for a variety of instruction issue methods that represent a range of complexity and sophistication. These vary from the CRAY-1 issue logic to a version of Tomasulo's algorithm, first used in the IBM 360/91 floating point unit. Also studied are Thornton's "scoreboard" algorithm used on the CDC 6600 and an algorithm we have devised. To provide a standard for comparison, all the issue methods are used to implement the CRAY-1 scalar architecture. Then, using a simulation model and the Lawrence Livermore Loops compiled with the CRAY Fortran compiler, performance results for the various issue methods are given and discussed.
Shlomo Weiss, James E. Smith 0001
IEEE Trans. Computers2
1984 Decoupled Access/Execute Computer Architectures
abstract
An architecture for high-performance scalar computation is proposed and discussed.The main feature of the architecture is a high degree of decoupling between operand access and execution.This results in an implementation that has two separate instruction streams that communicate via architectural queues.Performance comparisons with a conventional scalar architecture are given, and these show that significant performance gains can be realized.Single-instruction-stream versions, both physical and conceptual, are discussed, with the primary goal of minimizing the differences with conventional architectures.This allows known compilation and programming techniques to be used.Finally, the problem of deadlock in a decoupled system is discussed, and a deadlock prevention method is given.
James E. Smith 0001
ACM Trans. Comput. Syst.1
1983 A Study of Instruction Cache Organizations and Replacement Policies
abstract
Instruction caches are analyzed both theoretically and experimentally. The theoretical analysis begins with a new model for cache referencing behavior—the loop model. This model is used to study cache organizations and replacement policies. It is concluded theoretically that random replacement is better than LRU and FIFO, and that under certain circumstances, a direct-mapped or set associative cache may perform better than a full associative cache organization. Experimental results using instruction trace data are then given. The experimental results are shown to support the theoretical conclusions.
James E. Smith 0001, James R. Goodman
ISCA1
1983 A Theory of Totally Self-Checking System Design
abstract
A totally self-checking digital system uses error detecting codes at subsystem interfaces to detect faults before they can lead to harmful undetected errors. This paper develops a formal model for studying totally self-checking systems.
James E. Smith 0001, Paklin Lam
IEEE Trans. Computers1
1982 Developments in logic network path delay analysis
Lionel Bening, Thomas A. Lane, Curtis R. Alexander, James E. Smith 0001
DAC4
1982 Decoupled access/execute computer architectures
abstract
An architecture for improving computer performance is presented and discussed. The main feature of the architecture is a high degree of decoupling between operand access and execution. This results in an implementation which has two separate instruction streams that communicate via queues. A similar architecture has been previously proposed for array processors, but in that context the software is called on to do most of the coordination and synchronization between the instruction streams. This paper emphasizes implementation features that remove this burden from the programmer. Performance comparisons with a conventional scalar architecture are given, and these show that considerable performance gains are possible. Single instruction stream versions, both physical and conceptual, are discussed with the primary goal of minimizing the differences with conventional architectures. This would allow known compilation and programming techniques to be used. Finally, the problem of deadlock in such a system is discussed, and one possible solution is given.
James E. Smith 0001
ISCA1
1981 A Study of Branch Prediction Strategies
James E. Smith 0001
ISCA1
1981 Diagnosis of Systems with Asymmetric Invalidation
abstract
This paper is concerned with system diagnosis through analysis of a set of diagnostic test results. It is assumed that a faulty unit may cause one or more tests on a good unit to fail, but may not cause tests on faulty units to pass (asymmetric invalidation). The system model employed is quite general; each test may be invalidated by any one of a set of units, and each test may completely test more than one unit. Conditions for diagnosability with and without repair are determined. Exact methods, as well as simpler approximate methods, are proposed for determining diagnosability and for performing diagnosis. The theory is extended to include diagnosis "by part" (where a part is a set of units). Several illustrative examples are included.
Craig S. Holt, James E. Smith 0001
IEEE Trans. Computers2
1980 Measures of the Effectiveness of Fault Signature Analysis
abstract
A linear feedback shift register can be used to compress a serial stream of test result data. The compressed erroneous bit stream caused by a fault is said to form the "signature" of the fault. Since the bit stream is compressed, however, it is possible for an erroneous bit stream and the correct one to result in the same signature.
James E. Smith 0001
IEEE Trans. Computers1
1979 Universal System Diagnosis Algorithms
abstract
A class of simple digital system diagnosis algorithms is presented, and two members of the class are examined in detail. The algorithms are based on the assumption that good units can be replaced during the diagnosis process. Information pertaining to the system testing structure is not used by the two principal algorithms, so they can be applied regardless of system structure. The efficiency of the algorithms in terms of good units replaced is analyzed, and they are shown to compare favorably with methods for special case systems that have been proposed by others.
James E. Smith 0001
IEEE Trans. Computers1
1979 On Necessary and Sufficient Conditions for Multiple Fault Undetectability
abstract
This correspondence states necessary and sufficient conditions for a multiple stuck-at fault in a combinational network to be undetected by a test set. The conditions are given in terms of fault masking relationships. It is shown that several other statements on this subject which have appeared in the literature are invalid.
James E. Smith 0001
IEEE Trans. Computers1
1979 Detection of Faults in Programmable Logic Arrays
abstract
A new fault model is proposed for the purpose of testing programmable logic arrays. It is shown that a test set for all detectable modeled faults detects a wide variety of other faults. A test generation method for single faults is then outlined. Included is a bound on the size of test sets which indicates that test sets are much smaller than would be required by exhaustive testing. Finally, it is shown that many interesting classes of multiple faults are also detected by the test sets.
James E. Smith 0001
IEEE Trans. Computers1
1979 Comments on "Redundancy Testing in Combinational Networks"
abstract
In the above-mentioned paper1, Lee and Davidson present an algorithm for detecting all single redundant lines in a tree-type NAND network. In order to test for a single redundancy in a nontree network, they suggest replicating portions of the network (those which fan out) to get an equivalent tree-type NAND network. The algorithm for detecting single redundancies can then be applied to the equivalent tree-type network. However, a problem may arise if a single redundant connection in the original network, when replicated, leads to a set of connections all of which are irredundant when considered individually, but which are redundant when considered as a group. Lee and Davidson state that it is not known whether such a situation can occur. However, after some discussion they resolve the problem to the following question which they leave open: Can a set of 4 or more connections in a tree network corresponding to a single connection in the nontree network be redundant while any proper subset of the 4 or more lines is irredundant? The answer to this question will indicate whether the extension of their algorithm to nontree networks will always work.
James E. Smith 0001
IEEE Trans. Computers1
1978 On the Existence of Combinational Logic Circuits Exhibiting Multiple Redundancy
abstract
Multiple redundancy is a very complex form of redundancy about which little is known. This correspondence shows by construction that redundancy of any multiplicity can exist in an arbitrary combinational circuit, and that redundancy of any multiplicity ≥ 4 can exist in a tree circuit. Many examples are given. The correspondence concludes with a discussion of the effect multiple redundancy can have on multiple fault testing. It is shown that with a proper algorithm multiple redundancy can actually cause fewer problems than single redundancy does when single fault testing is being considered.
James E. Smith 0001
IEEE Trans. Computers1
1978 Strongly Fault Secure Logic Networks
abstract
Strongly fault secure logic networks are defined and are shown to include totally self-checking networks as a special case. Strongly fault secure networks provide the same protection against assumed faults as totally self-checking networks, and it is shown that when stuck-at faults are assumed a strongly fault secure network can be easily modified to form a totally self-checking network. A class of strongly fault secure networks is defined in terms of network structure. This structural definition of these "path fault secure" networks facilitates their design and implies other interesting properties. Finally, networks that are strongly fault secure with respect to single stuck-at faults are discussed. A large class of these networks is shown to be easily characterized, and network behavior under nonmodeled faults is considered.
James E. Smith 0001, Gernot Metze
IEEE Trans. Computers1