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

Josep M. Codina

dblp:38/2184 · DBLP profile ↗
← Back
12ranked-venue papers
2as first author
0since 2021 · last 2011
—ORCID · none

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

Systems, architecture and hardware · 10 · 2 first-authorSoftware engineering, systems software and programming languages · 4 · 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
6 papers
Processor architecture and microarchitecture · 83% Reconfigurable computing and FPGAs · 12% Parallel and multicore computing · 4%
Software engineering, system software, and programming languages
5 papers
Compilers and program optimization · 100%

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

TopicWeightPapersLastEvidence papers
Processor architecture and microarchitecture › clustered architecture
clustered microarchitecture
0.242009
AGAMOS: A Graph-Based Approach to Modulo Scheduling for Clustered Microarchitectures · IEEE Trans. Computers 2009
Removing communications in clustered microarchitectures through instruction replication · ACM Trans. Archit. Code Optim. 2004
Instruction Replication for Clustered Microarchitectures · MICRO 2003
Processor architecture and microarchitecture
instruction scheduling
0.122009
AGAMOS: A Graph-Based Approach to Modulo Scheduling for Clustered Microarchitectures · IEEE Trans. Computers 2009
Graph-partitioning based instruction scheduling for clustered processors · MICRO 2001
Compilers and program optimization
instruction scheduling
0.132004
Removing communications in clustered microarchitectures through instruction replication · ACM Trans. Archit. Code Optim. 2004
Instruction Replication for Clustered Microarchitectures · MICRO 2003
Graph-partitioning based instruction scheduling for clustered processors · MICRO 2001
Compilers and program optimization › instruction scheduling › software pipelining
modulo scheduling
0.122005
Demystifying on-the-fly spill code · PLDI 2005
Removing communications in clustered microarchitectures through instruction replication · ACM Trans. Archit. Code Optim. 2004
Processor architecture and microarchitecture
chip multiprocessor
0.112009
Boosting single-thread performance in multi-core systems through fine-grain multi-threading · ISCA 2009
Processor architecture and microarchitecture › multithreading
fine-grain multithreading
0.112009
Boosting single-thread performance in multi-core systems through fine-grain multi-threading · ISCA 2009
Reconfigurable computing and FPGAs
modulo scheduling
0.112009
AGAMOS: A Graph-Based Approach to Modulo Scheduling for Clustered Microarchitectures · IEEE Trans. Computers 2009
Processor architecture and microarchitecture
multithreading
0.112009
Boosting single-thread performance in multi-core systems through fine-grain multi-threading · ISCA 2009
Compilers and program optimization
register allocation
0.112005
Demystifying on-the-fly spill code · PLDI 2005
Compilers and program optimization › register allocation
register pressure reduction
0.112005
Demystifying on-the-fly spill code · PLDI 2005
Processor architecture and microarchitecture
instruction-level parallelism
0.022005
Demystifying on-the-fly spill code · PLDI 2005
Removing communications in clustered microarchitectures through instruction replication · ACM Trans. Archit. Code Optim. 2004
Compilers and program optimization › loop transformation
loop scheduling
0.012009
AGAMOS: A Graph-Based Approach to Modulo Scheduling for Clustered Microarchitectures · IEEE Trans. Computers 2009
Parallel and multicore computing
thread-level parallelism
0.012009
Boosting single-thread performance in multi-core systems through fine-grain multi-threading · ISCA 2009
Processor architecture and microarchitecture › instruction scheduling
software pipelining
0.012005
Demystifying on-the-fly spill code · PLDI 2005
Hardware reliability and fault tolerance › soft errors
instruction duplication
0.012004
Removing communications in clustered microarchitectures through instruction replication · ACM Trans. Archit. Code Optim. 2004

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

instruction replication · 0.4pseudoschedules · 0.2multilevel graph partitioning · 0.2on-the-fly spilling · 0.1a posteriori spilling · 0.1amdahl's law · 0.1modulo scheduling · 0.1spill code generation · 0.1register allocation · 0.1graph partitioning · 0.1
YearPublicationVenuePosition
2011 A Power-Efficient Co-designed Out-of-Order Processor
abstract
A co-designed processor helps in cutting down both the complexity and power consumption by co-designing certain key performance enablers. In this paper, we propose a FIFO based co-designed out-of-order processor. Multiple FIFOs are added in order to dynamically schedule, in a complexity-effective manner, the micro-ops. We propose a commit logic that is able to commit the program state as a superblock commits atomically. This enables us to get rid of the Reorder Buffer (ROB) entirely. Instead to maintain the correct program state, we propose a four/eight entry Superblock Ordering Buffer (SOB). We also propose the per superblock Register Rename Table (SRRT) that holds the register state pertaining to the superblock. Our proposed processor dissipates 6% less power and obtains 12% speedup for SPECFP, as a result, it consumes less energy. Furthermore, we propose an enhanced steering heuristic and an early release mechanism to increase the performance of a FIFO based out-of-order processor. We obtain performance improvement of nearly 25% and 70% for a four FIFO and for a two FIFO configurations, respectively. We also show that our proposed steering heuristic based processor consumes 10% less energy than the previously proposed steering heuristic.
Abhishek Deb, Josep M. Codina, Antonio González 0001
SBAC-PAD2
2009 Anaphase: A Fine-Grain Thread Decomposition Scheme for Speculative Multithreading
abstract
Industry is moving towards multi-core designs as we have hit the memory and power walls. Multi-core designs are very effective to exploit thread-level parallelism (TLP) but do not provide benefits when executing serial code (applications with low TLP, serial parts of a parallel application and legacy code). In this paper we propose Anaphase, a novel approach for speculative multithreading to improve single-thread performance in a multi-core design. The proposed technique is based on a graph partitioning technique which performs a decomposition of applications into speculative threads at instruction granularity. Moreover, the proposed technique leverages communications and pre-computation slices to deal with inter-thread dependences. Results presented in this paper show that this approach improves single-thread performance by 32% on average and up to 2.15x for some selected applications of the Spec2006 suite. In addition, the proposed technique outperforms by 21% on average schemes in which thread decomposition is performed at a coarser granularity.
Carlos Madriles, Pedro López 0001, Josep M. Codina, Enric Gibert, Fernando Latorre, Alejandro Martínez, Raúl Martínez, Antonio González 0001
PACT3
2009 Boosting single-thread performance in multi-core systems through fine-grain multi-threading
abstract
Industry has shifted towards multi-core designs as we have hit the memory and power walls. However, single thread performance remains of paramount importance since some applications have limited thread-level parallelism (TLP), and even a small part with limited TLP impose important constraints to the global performance, as explained by Amdahl's law.
Carlos Madriles, Pedro López 0001, Josep M. Codina, Enric Gibert, Fernando Latorre, Alejandro Martínez, Raúl Martínez, Antonio González 0001
ISCA3
2009 AGAMOS: A Graph-Based Approach to Modulo Scheduling for Clustered Microarchitectures
abstract
This paper presents AGAMOS, a technique to modulo schedule loops on clustered microarchitectures. The proposed scheme uses a multilevel graph partitioning strategy to distribute the workload among clusters and reduces the number of intercluster communications at the same time. Partitioning is guided by approximate schedules (i.e., pseudoschedules), which take into account all of the constraints that influence the final schedule. To further reduce the number of intercluster communications, heuristics for instruction replication are included. The proposed scheme is evaluated using the SPECfp95 programs. The described scheme outperforms a state-of-the-art scheduler for all programs and different cluster configurations. For some configurations, the speedup obtained when using this new scheme is greater than 40 percent, and for selected programs, performance can be more than doubled.
Alex Aletà, Josep M. Codina, F. Jesús Sánchez, Antonio González 0001, David R. Kaeli
IEEE Trans. Computers2
2008 A software-hardware hybrid steering mechanism for clustered microarchitectures
abstract
Clustered microarchitectures provide a promising paradigm to solve or alleviate the problems of increasing microprocessor complexity and wire delays. High- performance out-of-order processors rely on hardware-only steering mechanisms to achieve balanced workload distribution among clusters. However, the additional steering logic results in a significant increase on complexity, which actually decreases the benefits of the clustered design. In this paper, we address this complexity issue and present a novel software-hardware hybrid steering mechanism for out-of-order processors. The proposed software- hardware cooperative scheme makes use of the concept of virtual clusters. Instructions are distributed to virtual clusters at compile time using static properties of the program such as data dependences. Then, at runtime, virtual clusters are mapped into physical clusters by considering workload information. Experiments using SPEC CPU2000 benchmarks show that our hybrid approach can achieve almost the same performance as a state-of-the-art hardware-only steering scheme, while requiring low hardware complexity. In addition, the proposed mechanism outperforms state-of-the-art software-only steering mechanisms by 5% and 10% on average for 2-cluster and 4-cluster machines, respectively.
Qiong Cai, Josep M. Codina, José González 0002, Antonio González 0001
IPDPS2
2007 Heterogeneous Clustered VLIW Microarchitectures
abstract
Increasing performance, while at the same time reducing power consumption, is a major design tradeoff in current microprocessors. In this paper, we investigate the potential of using a heterogeneous clustered VLIW microarchitecture. In the proposed microarchitecture, each cluster, the interconnection network and the supporting memory hierarchy can run at different frequencies and voltages. Some of the clusters can then be configured to be performance-oriented and run at high frequency, while the other clusters can be configured to be low-power-oriented and run at lower frequencies, thus reducing overall consumption. For this heterogeneous design to be effective, we need to select the most suitable frequencies and voltages for each component. We propose a scheme to choose these parameters based on a model that estimates the energy consumption and the execution time of floating-point codes at compile time. Finally, we present a modulo scheduling technique based on graph partitioning that exploits the opportunities presented on heterogeneous clustered microarchitectures. Results show that the Energy-Delay product (ED2) can be significantly reduced by 15% on average for a microarchitecture with 4-clusters and by as much as 35% for selected programs
Alex Aletà, Josep M. Codina, Antonio González 0001, David R. Kaeli
CGO2
2007 Virtual Cluster Scheduling Through the Scheduling Graph
abstract
This paper presents an instruction scheduling and cluster assignment approach for clustered processors. The proposed technique makes use of a novel representation named the scheduling graph which describes all possible schedules. A powerful deduction process is applied to this graph, reducing at each step the set of possible schedules. In contrast to traditional list scheduling techniques, the proposed scheme tries to establish relations among instructions rather than assigning each instruction to a particular cycle. The main advantage is that wrong or poor schedules can be anticipated and discarded earlier. In addition, cluster assignment of instructions is performed using another novel concept called virtual clusters, which define sets of instructions that must execute in the same cluster. These clusters are managed during the deduction process to identify incompatibilities among instructions. The mapping of virtual to physical clusters is postponed until the scheduling of the instructions has finalized. The advantages this novel approach features include: (1) accurate scheduling information when assigning, and, (2) accurate information of the cluster assignment constraints imposed by scheduling decisions. We have implemented and evaluated the proposed scheme with superblocks extracted from Speclnt95 and MediaBench. The results show that this approach produces better schedules than the previous state-of-the-art. Speed-ups are up to 15%, with average speed-ups ranging from 2.5% (2-Clusters) to 9.5% (4-Clusters)
Josep M. Codina, F. Jesús Sánchez, Antonio González 0001
CGO1
2005 Demystifying on-the-fly spill code
abstract
Modulo scheduling is an effective code generation technique that exploits the parallelism in program loops by overlapping iterations. One drawback of this optimization is that register requirements increase significantly because values across different loop iterations can be live concurrently. One possible solution to reduce register pressure is to insert spill code to release registers. Spill code stores values to memory between the producer and consumer instructions.Spilling heuristics can be divided into two classes: 1) a posteriori approaches (spill code is inserted after scheduling the loop) or 2) on-the-fly approaches (spill code is inserted during loop scheduling). Recent studies have reported obtaining better results for spilling on-the-fly. In this work, we study both approaches and propose two new techniques, one for each approach. Our new algorithms try to address the drawbacks observed in previous proposals. We show that the new algorithms outperform previous techniques and, at the same time, reduce compilation time. We also show that, much to our surprise, a posteriori spilling can be in fact slitghtly more effective than on-the-fly spilling.
Alex Aletà, Josep M. Codina, Antonio González 0001, David R. Kaeli
PLDI2
2004 Removing communications in clustered microarchitectures through instruction replication
abstract
The need to communicate values between clusters can result in a significant performance loss for clustered microarchitectures. In this work, we describe an optimization technique that removes communications by selectively replicating an appropriate set of instructions. Instruction replication is done carefully because it might degrade performance due to the increased contention it can place on processor resources. The proposed scheme is built on top of a previously proposed state-of-the-art modulo-scheduling algorithm. Though this algorithm has been proved to be very effective at reducing communications, results show that the number of communications can be further decreased by around one-third through replication, which results in a significant speedup. IPC is increased by 25% on average for a four-cluster microarchitecture and by as much as 70% for selected programs. We also show that replicating appropriate sets of instructions is more effective than doubling the intercluster connection network bandwidth.
Alex Aletà, Josep M. Codina, Antonio González 0001, David R. Kaeli
ACM Trans. Archit. Code Optim.2
2003 Instruction Replication for Clustered Microarchitectures
abstract
This work presents a new compilation technique that uses instruction replication in order to reduce the number of communications executed on a clustered microarchitecture. For such architectures, the need to communicate values between clusters can result in a significant performance loss. Inter-cluster communications can be reduced by selectively replicating an appropriate set of instructions. However, instruction replication must be done carefully since it may also degrade performance due to the increased contention it can place on processor resources. The proposed scheme is built on top of a previously proposed state-of-the-art modulo scheduling algorithm that effectively reduces communications. Results show that the number of communications can decrease using replication, which results in significant speed-ups. IPC is increased by 25% on average for a 4-cluster microarchitecture and by as mush as 70% for selected programs.
Alex Aletà, Josep M. Codina, Antonio González 0001, David R. Kaeli
MICRO2
2002 A comparative study of modulo scheduling techniques
abstract
Modulo Scheduling is an instruction scheduling technique that is used by many current compilers. Different approaches have been proposed in the past but there is not a quantitative comparison among them, using the same compiling platform, benchmarks and architectures.This paper presents a performance comparison of the most relevant Modulo Scheduling techniques, based on a detailed quantitative evaluation of them. The results point out which are the most effective techniques for different architectures, which is useful for compiler designers when choosing the most appropriate technique for a particular processor architecture.
Josep M. Codina, Josep Llosa, Antonio González 0001
ICS1
2001 Graph-partitioning based instruction scheduling for clustered processors
abstract
This paper presents a novel scheme to schedule loops for clustered microarchitectures. The scheme is based on a preliminary cluster assignment phase implemented through graph partitioning techniques followed by a scheduling phase that integrates register allocation and spill code generation. The graph partitioning scheme is shown to be very effective due to its global view of the whole code while the partition is generated. Results show a significant speedup when compared with previously proposed techniques. For some processor configuration the average speedup for the SPECfp95 is 23% with respect to the published scheme with the best performance. Besides, the proposed scheme is much faster (between 2-7 times, depending on the configuration).
Alex Aletà, Josep M. Codina, F. Jesús Sánchez, Antonio González 0001
MICRO2