21.01.2013 Views

Lecture Notes in Computer Science 4917

Lecture Notes in Computer Science 4917

Lecture Notes in Computer Science 4917

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

LPA: A First Approach to the<br />

Loop Processor Architecture<br />

Alejandro García 1 , Oliverio J. Santana 2 , Enrique Fernández 2 , Pedro Med<strong>in</strong>a 2 ,<br />

and Mateo Valero 13<br />

1 Universitat Politècnica de Catalunya, Spa<strong>in</strong><br />

{juanaleg,mateo}@ac.upc.edu<br />

2 Universidad de Las Palmas de Gran Canaria, Spa<strong>in</strong><br />

{ojsantana,efernandez,pmed<strong>in</strong>a}@dis.ulpgc.es<br />

3 Barcelona Supercomput<strong>in</strong>g Center, Spa<strong>in</strong><br />

Abstract. Current processors frequently run applications conta<strong>in</strong><strong>in</strong>g<br />

loop structures. However, traditional processor designs do not take <strong>in</strong>to<br />

account the semantic <strong>in</strong>formation of the executed loops, fail<strong>in</strong>g to exploit<br />

an important opportunity. In this paper, we take our first step toward a<br />

loop-conscious processor architecture that has great potential to achieve<br />

high performance and relatively low energy consumption.<br />

In particular, we propose to store simple dynamic loops <strong>in</strong> a buffer,<br />

namely the loop w<strong>in</strong>dow. Loop <strong>in</strong>structions are kept <strong>in</strong> the loop<br />

w<strong>in</strong>dow along with all the <strong>in</strong>formation needed to build the rename mapp<strong>in</strong>g.<br />

Therefore, the loop w<strong>in</strong>dow can directly feed the execution backend<br />

queues with <strong>in</strong>structions, avoid<strong>in</strong>g the need for us<strong>in</strong>g the prediction,<br />

fetch, decode, and rename stages of the normal processor pipel<strong>in</strong>e. Our<br />

results show that the loop w<strong>in</strong>dow is a worthwhile complexity-effective<br />

alternative for processor design that reduces front-end activity by 14%<br />

for SPEC<strong>in</strong>t benchmarks and by 45% for SPECfp benchmarks.<br />

1 Introduction<br />

Recent years have witnessed an enormous growth of the distance between the<br />

memory and the ALUs, that is, the distance between where the <strong>in</strong>structions are<br />

stored and where computation actually happens. In order to overcome this gap,<br />

current superscalar processors try to exploit as much <strong>in</strong>struction-level parallelism<br />

(ILP) as possible by <strong>in</strong>creas<strong>in</strong>g the number of <strong>in</strong>structions executed per cycle.<br />

Increas<strong>in</strong>g the amount of ILP available to standard superscalar processor designs<br />

<strong>in</strong>volves <strong>in</strong>creas<strong>in</strong>g both the number of pipel<strong>in</strong>e stages and the complexity<br />

of the logic required to complete <strong>in</strong>struction execution. The search for mechanisms<br />

that reduce design complexity without loos<strong>in</strong>g the ability of exploit<strong>in</strong>g<br />

ILP is always an <strong>in</strong>terest<strong>in</strong>g research field for computer architects.<br />

In this paper, we focus on high-level loop structures. It is well known that most<br />

applications execute just 10% of their static <strong>in</strong>structions dur<strong>in</strong>g 90% of their run<br />

time [1]. This fact is ma<strong>in</strong>ly due to the presence of loop structures. However,<br />

although loops are frequent entities <strong>in</strong> program execution, standard superscalar<br />

P. Stenström et al. (Eds.): HiPEAC 2008, LNCS <strong>4917</strong>, pp. 273–287, 2008.<br />

c○ Spr<strong>in</strong>ger-Verlag Berl<strong>in</strong> Heidelberg 2008

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!