100% found this document useful (2 votes)
26 views

Speculative Execution in High Performance Computer Architectures Chapman Hall Crc Computer Information Science Series 1st Edition David Kaeli pdf download

The document is a detailed overview of the book 'Speculative Execution in High Performance Computer Architectures' edited by David Kaeli and Pen-Chung Yew, published by Chapman & Hall/CRC. It covers various topics related to computer architecture, including instruction cache prefetching, branch prediction, and data speculation. The book is part of a series that aims to provide comprehensive insights into advanced computer science concepts and methodologies.

Uploaded by

dghimmirjm
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (2 votes)
26 views

Speculative Execution in High Performance Computer Architectures Chapman Hall Crc Computer Information Science Series 1st Edition David Kaeli pdf download

The document is a detailed overview of the book 'Speculative Execution in High Performance Computer Architectures' edited by David Kaeli and Pen-Chung Yew, published by Chapman & Hall/CRC. It covers various topics related to computer architecture, including instruction cache prefetching, branch prediction, and data speculation. The book is part of a series that aims to provide comprehensive insights into advanced computer science concepts and methodologies.

Uploaded by

dghimmirjm
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 78

Speculative Execution in High Performance

Computer Architectures Chapman Hall Crc Computer


Information Science Series 1st Edition David
Kaeli pdf download
https://ebookgate.com/product/speculative-execution-in-high-
performance-computer-architectures-chapman-hall-crc-computer-
information-science-series-1st-edition-david-kaeli/

Get Instant Ebook Downloads – Browse at https://ebookgate.com


Instant digital products (PDF, ePub, MOBI) available
Download now and explore formats that suit you...

Handbook of Approximation Algorithms and Metaheuristics


Chapman Hall CRC Computer Information Science Series 1st
Edition Teofilo F. Gonzalez
https://ebookgate.com/product/handbook-of-approximation-algorithms-
and-metaheuristics-chapman-hall-crc-computer-information-science-
series-1st-edition-teofilo-f-gonzalez/
ebookgate.com

High Performance Computing Programming and Applications


Chapman Hall CRC Computational Science 1st Edition John
Levesque
https://ebookgate.com/product/high-performance-computing-programming-
and-applications-chapman-hall-crc-computational-science-1st-edition-
john-levesque/
ebookgate.com

Bioinformatics High Performance Parallel Computer


Architectures Embedded Multi Core Systems 1st Edition
Bertil Schmidt
https://ebookgate.com/product/bioinformatics-high-performance-
parallel-computer-architectures-embedded-multi-core-systems-1st-
edition-bertil-schmidt/
ebookgate.com

Bayesian Data Analysis Second Edition Chapman Hall CRC


Texts in Statistical Science Andrew Gelman

https://ebookgate.com/product/bayesian-data-analysis-second-edition-
chapman-hall-crc-texts-in-statistical-science-andrew-gelman/

ebookgate.com
R Markdown The Definitive Guide Chapman Hall CRC The R
Series 1st Edition Xie

https://ebookgate.com/product/r-markdown-the-definitive-guide-chapman-
hall-crc-the-r-series-1st-edition-xie/

ebookgate.com

Context Aware Computing and Self Managing Systems Chapman


Hall CRC Studies in Informatics Series 1st Edition
Waltenegus Dargie
https://ebookgate.com/product/context-aware-computing-and-self-
managing-systems-chapman-hall-crc-studies-in-informatics-series-1st-
edition-waltenegus-dargie/
ebookgate.com

Foundations of Fuzzy Logic and Semantic Web Languages


Chapman Hall CRC Studies in Informatics Series 1st Edition
Straccia
https://ebookgate.com/product/foundations-of-fuzzy-logic-and-semantic-
web-languages-chapman-hall-crc-studies-in-informatics-series-1st-
edition-straccia/
ebookgate.com

Scientific Data Management Challenges Technology and


Deployment Chapman Hall CRC Computational Science 1st
Edition Arie Shoshani
https://ebookgate.com/product/scientific-data-management-challenges-
technology-and-deployment-chapman-hall-crc-computational-science-1st-
edition-arie-shoshani/
ebookgate.com

Statistical Design and Analysis of Stability Studies


Chapman Hall Crc Biostatistics Series 1st Edition Shein-
Chung Chow
https://ebookgate.com/product/statistical-design-and-analysis-of-
stability-studies-chapman-hall-crc-biostatistics-series-1st-edition-
shein-chung-chow/
ebookgate.com
CHAPMAN & HALL/CRC COMPUTER and INFORMATION SCIENCE SERIES

Speculative Execution
in High Performance
Computer Architectures
CHAPMAN & HALL/CRC
COMPUTER and INFORMATION SCIENCE SERIES
Series Editor: Sartaj Sahni
PUBLISHED TITLES
HANDBOOK OF SCHEDULING: ALGORITHMS, MODELS, AND PERFORMANCE ANALYSIS
Joseph Y-T. Leung
THE PRACTICAL HANDBOOK OF INTERNET COMPUTING
Munindar P. Singh
HANDBOOK OF DATA STRUCTURES AND APPLICATIONS
Dinesh P. Mehta and Sartaj Sahni
DISTRIBUTED SENSOR NETWORKS
S. Sitharama Iyengar and Richard R. Brooks
SPECULATIVE EXECUTION IN HIGH PERFORMANCE COMPUTER ARCHITECTURES
David Kaeli and Pen-Chung Yew
CHAPMAN & HALL/CRC COMPUTER and INFORMATION SCIENCE SERIES

Speculative Execution
in High Performance
Computer Architectures

Edited by
David Kaeli
Northeastern University
Boston, MA

and Pen-Chung Yew


University of Minnesota
Minneapolis, MN

Boca Raton London New York Singapore


C4479_Discl.fm Page 1 Wednesday, April 20, 2005 8:02 AM

Published in 2005 by
CRC Press
Taylor & Francis Group
6000 Broken Sound Parkway NW, Suite 300
Boca Raton, FL 33487-2742

© 2005 by Taylor & Francis Group, LLC


CRC Press is an imprint of Taylor & Francis Group
No claim to original U.S. Government works
Printed in the United States of America on acid-free paper
10 9 8 7 6 5 4 3 2 1
International Standard Book Number-10: 1-58488-447-9 (Hardcover)
International Standard Book Number-13: 978-1-58488-447-7 (Hardcover)
Library of Congress Card Number 2005041310
This book contains information obtained from authentic and highly regarded sources. Reprinted material is
quoted with permission, and sources are indicated. A wide variety of references are listed. Reasonable efforts
have been made to publish reliable data and information, but the author and the publisher cannot assume
responsibility for the validity of all materials or for the consequences of their use.
No part of this book may be reprinted, reproduced, transmitted, or utilized in any form by any electronic,
mechanical, or other means, now known or hereafter invented, including photocopying, microfilming, and
recording, or in any information storage or retrieval system, without written permission from the publishers.
For permission to photocopy or use material electronically from this work, please access www.copyright.com
(http://www.copyright.com/) or contact the Copyright Clearance Center, Inc. (CCC) 222 Rosewood Drive,
Danvers, MA 01923, 978-750-8400. CCC is a not-for-profit organization that provides licenses and registration
for a variety of users. For organizations that have been granted a photocopy license by the CCC, a separate
system of payment has been arranged.
Trademark Notice: Product or corporate names may be trademarks or registered trademarks, and are used only
for identification and explanation without intent to infringe.

Library of Congress Cataloging-in-Publication Data

Kaeli, David R.
Speculative execution in high performance computer architectures / David Kaeli and Pen Yew.
p. cm. -- (Chapman & Hall/CRC computer and information science series)
Includes bibliographical references and index.
ISBN 1-58488-447-9 (alk. paper)
1. Computer architecture. I. Yew, Pen-Chung, 1950- II. Title. III. Series.

QA76.9.A73K32 2005
004'.35--dc22 2005041310

Visit the Taylor & Francis Web site at


http://www.taylorandfrancis.com
Taylor & Francis Group and the CRC Press Web site at
is the Academic Division of T&F Informa plc. http://www.crcpress.com
About the Editors

David Kaeli received his B.S. in Electrical Engineering from Rutgers Uni-
versity, his M.S. in Computer Engineering from Syracuse University, and his
Ph.D. in Electrical Engineering from Rutgers University. He is currently an
Associate Professor on the faculty of the Department of Electrical and Com-
puter Engineering at Northeastern University. Prior to 1993, he spent 12
years at IBM, the last 7 at IBM T.J. Watson Research in Yorktown Heights,
N.Y. In 1996 he received the NSF CAREER Award. He currently direct-
s the Northeastern University Computer Architecture Research Laboratory
(NUCAR). Dr. Kaeli’s research interests include computer architecture and
organization, compiler optimization, VLSI design, trace-driven simulation and
workload characterization. He is an editor for the Journal of Instruction Level
Parallelism, the IEEE Computer Architecture Letters, and a past editor for
IEEE Transactions on Computers. He is a member of the IEEE and ACM.
URL: www.ece.neu.edu/info/architecture/nucar.html

Pen-Chung Yew is a professor of the Department of Computer Science and


Engineering, University of Minnesota. Previously, he was an Associate Di-
rector of the Center for Supercomputing Research and Development (CSRD)
at the University of Illinois at Urbana-Champaign. From 1991 to 1992, he
served as the Program Director of the Microelectronic Systems Architecture
Program in the Division of Microelectronic Information Processing Systems
at the National Science Foundation, Washington, D.C. Pen-Chung Yew is an
IEEE Fellow. He served as the Editor-in-Chief of the IEEE Trans. on Parallel
and Distributed Systems between 2002-2005. He has served on the program
committee of major conferences. He also served as a co-chair of the 1990 In-
ternational Conference on Parallel Processing, a general co-chair of the 1994
International Symposium on Computer Architecture, the program chair of the
1996 International Conference on Supercomputing, and a program co-chair of
the 2002 International Conference on High Performance Computer Architec-
ture. He has also served on the editorial boards of the IEEE Transactions
on Parallel and Distributed Systems from 1992 to 1996, and Journal of Par-
allel and Distributed Computing from 1989 to 1995. He received his Ph.D.
from the University of Illinois at Urbana-Champaign, M.S. from University of
Massachusetts at Amherst, and B.S. from National Taiwan University.

v
Acknowledgments

Professors Kaeli and Yew would like to thank their students for their help and
patience in the preparation of the chapters of this text. They would also like
to thank their families for their support on this project.

vii
Contents

1 Introduction 1
David R. Kaeli1 and Pen-Chung Yew2 Northeastern University,1 Uni-
versity of Minnesota2

2 Instruction Cache Prefetching 9


Glenn Reinman UCLA Computer Science Department

3 Branch Prediction 29
Philip G. Emma IBM T.J. Watson Research Laboratory

4 Trace Caches 87
Eric Rotenberg North Carolina State University

5 Branch Predication 109


David August Princeton University

6 Multipath Execution 135


Augustus K. Uht University of Rhode Island

7 Data Cache Prefetching 161


1 2 1
Yan Solihin and Donald Yeung North Carolina State University;
University of Maryland at College Park2

8 Address Prediction 187


Avi Mendelson Intel Mobil Micro-Processor Architect

9 Data Speculation 215


Yiannakis Sazeides,1 Pedro Marcuello,2 James E. Smith,3 and An-
tonio González2,4 1 University of Cyprus; 2 Intel-UPC Barcelona Research
Center; 3 University of Wisconsin-Madison; 4
Universitat Politècnica de
Catalunya

10 Instruction Precomputation 245


Joshua J. Yi,1 Resit Sendag,2 and David J. Lilja3 1 Freescale Semi-
conductor Inc.; 2 University of Rhode Island; 3 University of Minnesota at
Twin Cities

ix
x Contents

11 Profile-Based Speculation 269


Youfeng Wu and Jesse Fang Intel Microprocessor Technology
Labs

12 Compilation and Speculation 301


Jin Lin, Wei-Chung Hsu, and Pen-Chung Yew University of
Minnesota

13 Multithreading and Speculation 333


Pedro Marcuello, Jesus Sanchez, and Antonio González Intel-UPC
Barcelona Research Center; Intel Labs; Universitat Politecnica de Catalun-
ya; Barcelona (Spain)

14 Exploiting Load/Store Parallelism via Memory Dependence


Prediction 355
Andreas Moshovos University of Toronto

15 Resource Flow Microarchitectures 393


David A. Morano,1 David R. Kaeli,1 and Augustus K. Uht2
1
Northeastern University; 2 University of Rhode Island

Index 421
List of Tables

4.1 Growth in instruction-level parallelism (ILP). . . . . . . . . . 87

5.1 IMPACT EPIC predicate deposit types. . . . . . . . . . . . . 113


5.2 Five comparison type combinations for IA-64 . . . . . . . . . 124

6.1 Multipath taxonomy and machine/model characteristics . . . 139

10.1 Characteristics of the 2048 most frequent unique computations 249


10.2 Number of unique computations . . . . . . . . . . . . . . . . 250
10.3 Key performance parameters . . . . . . . . . . . . . . . . . . 254
10.4 Selected SPEC CPU 2000 benchmarks and input sets . . . . 254
10.5 Processor performance bottlenecks . . . . . . . . . . . . . . . 261

12.1 Using control and data speculation to hide memory latency. . 302
12.2 Example 12.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
12.3 Enhanced Φ insertion allows data speculation. . . . . . . . . . 317
12.4 Enhanced renaming allows data speculation . . . . . . . . . . 318
12.5 An example of speculative load and check generation . . . . . 321
12.6 Different representations used to model check instructions and
recovery code . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
12.7 Two examples of multi-level speculation . . . . . . . . . . . . 323
12.8 Examples of check instructions and their recovery blocks in
multi-level speculation . . . . . . . . . . . . . . . . . . . . . . 324
12.9 Examples of check instructions and their recovery blocks in
multi-level speculation . . . . . . . . . . . . . . . . . . . . . . 325
12.10Example of recovery code generation in speculative PRE . . . 328
12.11The recovery code introduced in the speculative PRE interacts
with the instruction scheduling . . . . . . . . . . . . . . . . . 329

14.1 Program input data sets . . . . . . . . . . . . . . . . . . . . . 376


14.2 Default configuration for superscalar timing simulations . . . 377
14.3 Misspeculations with speculation/synchronization . . . . . . . 387

xi
List of Figures

2.1 Instruction delivery mechanism . . . . . . . . . . . . . . . . . 10


2.2 Different instruction cache designs . . . . . . . . . . . . . . . 12
2.3 Sample instruction address stream . . . . . . . . . . . . . . . 15
2.4 The stream buffer in action . . . . . . . . . . . . . . . . . . . 17
2.5 Out-of-order fetch with a lockup-free instruction cache . . . . 18
2.6 Out-of-order fetch in action . . . . . . . . . . . . . . . . . . . 20
2.7 The fetch directed prefetching architecture. . . . . . . . . . . 21
2.8 The fetch directed architecture in action . . . . . . . . . . . . 22
2.9 Integrated prefetching architecture . . . . . . . . . . . . . . . 25

3.1 Von Neumann’s IAS machine . . . . . . . . . . . . . . . . . . 32


3.2 The pipelining concept . . . . . . . . . . . . . . . . . . . . . . 38
3.3 Instruction prefetching . . . . . . . . . . . . . . . . . . . . . . 41
3.4 An RS-style pipeline with various approaches to branch predic-
tion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.5 Simple state-machines for branch prediction . . . . . . . . . . 49
3.6 Decode-time branch predictors . . . . . . . . . . . . . . . . . 51
3.7 Branch target buffer . . . . . . . . . . . . . . . . . . . . . . . 56
3.8 Subroutine call and return . . . . . . . . . . . . . . . . . . . . 59

4.1 Conventional instruction cache. . . . . . . . . . . . . . . . . . 88


4.2 High-level view of trace cache operation. . . . . . . . . . . . . 90
4.3 Instruction fetch unit with trace cache. . . . . . . . . . . . . . 92
4.4 Two-way interleaved instruction cache. . . . . . . . . . . . . . 93
4.5 Contents of trace cache line. . . . . . . . . . . . . . . . . . . . 96

5.1 A simple predication example . . . . . . . . . . . . . . . . . . 111


5.2 Example from the Cydra 5 . . . . . . . . . . . . . . . . . . . 121
5.3 Execution time of the SPEC benchmarks . . . . . . . . . . . 125
5.4 Execution time of the SPEC benchmarks . . . . . . . . . . . 126
5.5 The multiple definition problem . . . . . . . . . . . . . . . . . 127
5.6 Serialization to solve the multidef problem. . . . . . . . . . . 128

6.1 Branch Trees . . . . . . . . . . . . . . . . . . . . . . . . . . . 138


6.2 Static DEE tree [15] operating on a dynamic code stream. . . 143
6.3 Typical branch path ID numbering scheme. . . . . . . . . . . 144

xiii
xiv List of Figures

7.1 Example illustrating Mowry’s algorithm. . . . . . . . . . . . . 165


7.2 Example illustrating greedy pointer prefetching. . . . . . . . . 169
7.3 Example illustrating jump-pointer and prefetch-array pointer
prefetching. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
7.4 Illustration for stream buffer operation. . . . . . . . . . . . . 175
7.5 Correlation prefetching algorithms . . . . . . . . . . . . . . . 178
7.6 Heuristics for pointer identification . . . . . . . . . . . . . . . 179

8.1 Load distribution . . . . . . . . . . . . . . . . . . . . . . . . . 195


8.2 Breakdown of address predictability . . . . . . . . . . . . . . 196
8.3 Predictability of addresses . . . . . . . . . . . . . . . . . . . . 197
8.4 Predictability of addresses. . . . . . . . . . . . . . . . . . . . 198
8.5 Address predictability . . . . . . . . . . . . . . . . . . . . . . 199
8.6 Value prediction vs. address prediction - SPECint. . . . . . . 200
8.7 Value prediction vs. address prediction - SPECfp. . . . . . . 201
8.8 Performance gain for the APDP technique. . . . . . . . . . . 202
8.9 Colliding vs. conflicting loads. . . . . . . . . . . . . . . . . . . 203
8.10 Speedup of perfect disambiguation over no speculation. . . . 204
8.11 Speedup of naive speculation . . . . . . . . . . . . . . . . . . 206

9.1 Implications of Data Value Speculation (DVS). . . . . . . . . 218


9.2 Various value predictors. . . . . . . . . . . . . . . . . . . . . . 221
9.3 Data dependence speculation. . . . . . . . . . . . . . . . . . . 227
9.4 Store sets data dependence predictor. . . . . . . . . . . . . . 230
9.5 A microarchitecture with data value speculation. . . . . . . . 234

10.1 Frequency of unique computations . . . . . . . . . . . . . . . 248


10.2 Percentage of dynamic instructions . . . . . . . . . . . . . . . 249
10.3 Operation of a superscalar pipeline . . . . . . . . . . . . . . . 251
10.4 Instruction precomputation speedup for profile A, run A . . . 255
10.5 Instruction precomputation speedup for profile B, run A . . . 256
10.6 Instruction precomputation speedup for profile AB, run A . . 258
10.7 Instruction precomputation speedup; Profile B, run A. . . . . 259
10.8 Speedup due to value reuse; Run A. . . . . . . . . . . . . . . 260

11.1 Pointer-chasing code with stride patterns. . . . . . . . . . . . 282


11.2 Irregular code with multiple stride patterns. . . . . . . . . . . 283
11.3 Example of stride profile guided prefetching. . . . . . . . . . . 285
11.4 High-level algorithm flow. . . . . . . . . . . . . . . . . . . . . 287

12.1 Redundancy elimination . . . . . . . . . . . . . . . . . . . . . 303


12.2 Instrumentation-based profiling process . . . . . . . . . . . . 304
12.3 Detect data dependence using shadow. . . . . . . . . . . . . . 306
12.4 False dependences . . . . . . . . . . . . . . . . . . . . . . . . 307
12.5 Dependence probability . . . . . . . . . . . . . . . . . . . . . 309
List of Figures xv

12.6 Speculative analyses and optimization . . . . . . . . . . . . . 310


12.7 Speculative alias and dataflow analysis . . . . . . . . . . . . . 313
12.8 Types of occurrence relationships . . . . . . . . . . . . . . . . 316
12.9 Speculative code motion. . . . . . . . . . . . . . . . . . . . . . 320
12.10Partial ready code motion . . . . . . . . . . . . . . . . . . . . 327

13.1 Helper thread example. . . . . . . . . . . . . . . . . . . . . . 337


13.2 Speculative architectural thread example. . . . . . . . . . . . 338
13.3 Example of execution in a speculative multithreaded processor. 343

14.1 Sending memory reads early . . . . . . . . . . . . . . . . . . . 356


14.2 Run-time disambiguation: A static approach . . . . . . . . . 359
14.3 The memory conflict buffer: A hybrid approach . . . . . . . . 360
14.4 Memory dependence speculation: A dynamic approach . . . . 362
14.5 Memory dependence speculation policies . . . . . . . . . . . . 364
14.6 Memory RAW dependence set locality . . . . . . . . . . . . . 366
14.7 Dynamic synchronization. . . . . . . . . . . . . . . . . . . . . 367
14.8 Instances of the same RAW dependence . . . . . . . . . . . . 367
14.9 Synchronizing memory dependences. . . . . . . . . . . . . . . 372
14.10Supporting multiple static dependences . . . . . . . . . . . . 373
14.11Performance potential with load/store parallelism . . . . . . . 379
14.12Naive memory dependence speculation . . . . . . . . . . . . . 380
14.13Memory dependence speculation vs. address-based scheduling 382
14.14Oracle disambiguation . . . . . . . . . . . . . . . . . . . . . . 384
14.15Speculation/synchronization . . . . . . . . . . . . . . . . . . . 386

15.1 High-level block diagram of the active station. . . . . . . . . . 401


15.2 Block diagram of an operand block . . . . . . . . . . . . . . . 403
15.3 Operand snooping . . . . . . . . . . . . . . . . . . . . . . . . 405
15.4 High-level view of a resource flow microarchitecture . . . . . . 407
15.5 High-level block diagram of a representative microarchitecture 408
15.6 The Execution Window of a distributed microarchitecture . . 411
Chapter 1
Introduction

David R. Kaeli1 and Pen-Chung Yew2


Northeastern University,1 University of Minnesota2

1.1 Speculation for the Instruction Stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2


1.2 Speculation for the Data Stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Compiler and Multithreading-Based Speculation . . . . . . . . . . . . . . . . . . . . . 4
1.4 Speculative Microarchitectures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

Advances in VLSI technology will soon enable us to place more than a billion
transistors on a single chip. Given this available chip real estate, new com-
puter architectures have been proposed to take advantage of this abundance
of transistors. The two main approaches that have been used successfully to
improve performance are:

1. increasing the clock rate, and

2. exploiting the available instruction-level parallelism through pipelining,


out-of-order execution, and multithreading.

However, to expose the potential instruction-level parallelism present in pro-


grams, control flow and data flow constraints inherent in a program must be
overcome.
Speculative execution has become a mainstream technique to reduce the im-
pact of dependencies in high performance microprocessors. Speculation can
be implemented using a combination of hardware and software techniques.
Compiler support is sometimes necessary to fully exploit the benefits of spec-
ulation. The key attributes associated with effective speculative techniques
are:

• the ability to accurately predict the event with high accuracy,

• the ability to recover quickly when a speculative guess was incorrect,

• the ability to identify those events which can be predicted with high
accuracy, and

• the ability to filter out those events which are hard to predict.

1
2 Speculative Execution in High Performance Computer Architectures

This book brings together experts from both academia and industry who are
actively involved in research in the various aspects of speculative execution.
The material present in this book is organized around four general themes:
1. instruction-level speculation,
2. data-level speculation,
3. compiler-level support and multithreading for speculative execution, and
4. novel speculative execution architectures.
Next we will discuss each of these topics as a brief introduction to this book.

1.1 Speculation for the Instruction Stream


Chapters 2-6 cover topics related to speculation techniques for determining
the instruction stream which will be followed by the program. To be able
to obtain any benefits from data speculation, we must first be executing the
correct instruction stream. Control hazards are inherent in the execution of
any program where decisions need to be made. Conditional branches can
introduce a large number of stalls in the pipeline, waiting for the dependent
condition to be evaluated. Once we know the direction of the conditional
branch (i.e., taken or not taken), we need to compute the target address to
fetch instructions from.
Chapter 2 treats the subject of instruction cache prefetching by looking at a
number of mechanisms that try to load instructions into the cache before the
address is requested. Cache design dominated architecture literature during
the 1980’s [1], and still remains a key design point for obtaining high per-
formance. Cache prefetching is commonly implemented in most instruction
caches today.
Chapter 3 presents a complete overview of issues related to speculating
on the direction and target address of branch [2] and jump instructions [3].
The subject of branch prediction dominated computer architecture literature
during the 1990’s [4]. This chapter presents some of the early history of
control flow in the architecture field, and also some of the earliest attempts
to speculate beyond these dependencies [5].
Chapter 4 introduces a more recent speculative instruction delivery mech-
anism, the Trace Cache [6]. This mechanism attempt to make more efficient
use of the available memory space by storing sequences of instruction blocks in
an on-chip memory. Trace caches have begun to appear on high performance
microprocessors [7]. Trace caches [8] supply a speculative trace of instruction-
s, based on past execution frequencies. The goal is to provide the processor
with instructions that may span many control flow blocks.
Introduction 3

Chapter 5 covers a very different approach to handling control flow depen-


dencies. Instead of attempting to decide which path a branch will take, we can
use branch predication [9] to allow us to execute instructions down both paths.
Once the branch is resolved, the instructions speculatively executed down the
wrong path can be squashed (i.e., their results can be discarded). Predication
has recently been implemented in recent microprocessor architectures [10].
Finally, in the last chapter in this section, an aggressive branch resolution
approach is described. The concepts of eager execution [11] and multi-path
execution are presented. The key concept here is to begin to issue and exe-
cute instructions from both legs of a branch decision. As long as there are
enough functional units available, one of the speculative paths should be able
to provide the correct execution. While this form of speculation may require
significant hardware resources, it does guarantee some significant performance
benefits [12].
Next we consider how best to overcome data dependencies that are present
in our execution.

1.2 Speculation for the Data Stream


Chapters 7-10 cover topics related to using speculative execution for the
purpose of reducing access time of the data in programs. As the gap between
the speed of microprocessors and their supporting memory systems continues
to grow, data access time to memory, especially to the second-level cache
memory and beyond, has become the most dominant performance bottleneck
on today’s computer systems (commonly referred to as the memory wall).
In Chapter 7, data prefetching schemes that are used to increase the da-
ta cache hit ratio are surveyed and discussed. In general, the spatial and
temporal locality present in the data stream is not as high as locality in the
instruction stream. Data prefetching, if done properly, has been shown to
be a very effective way to hide cache miss latency. These mechanisms load
data into data cache before they are needed. These schemes are speculative
in nature because the addresses used for prefetching are often speculatively
generated. Hence, the prefetched data may not be exactly what are needed
later in the execution, and they may replace some useful data still being used
in the cache. There have been many software and hardware schemes proposed
for data prefetching. Array-based data structures possessing constant strides
are simple to prefetch, while structures addressed by pointers present difficul-
ty. Schemes such as jump pointers [13], dependence-based prefetching [14]
and content-based prefetching are used for such complex memory accesses.
Chapter 8 focuses on speculative schemes that can improve so-called f etch−
load − to − use delay (i.e., the time between the memory load instruction
4 Speculative Execution in High Performance Computer Architectures

is fetched and the time the instruction that depends on the value of the
load instruction can use it.) These schemes use techniques such as address
prediction and dependency prediction [15]. The emphasis in this chapter is on
out-of-order processor architectures. A taxonomy of address calculation and
address prediction is presented. Address prediction is a special case of value
prediction, and utilizes similar schemes [16]. Issues related to speculative
memory disambiguation in out-of-order processors, as well as empirical data
on the potential of such speculative disambiguation, are also presented.
Chapter 9 presents mechanisms that perform data value speculation. In
general, data dependence speculation tries to speculatively ignore data depen-
dences that are either too ambiguous or too rare to occur [17]. Data value
speculation tries to predict values of the true data dependencies that will
actually occur during program execution. The data dependent instructions
can thus proceed speculatively without waiting for the results of the instruc-
tions they depend on [18]. Various value predictors and the issues related to
their implementation such as their hardware complexity are presented. Is-
sues related to data dependence speculation are described in the context of
data value prediction. Four different approaches are discussed that can be
used to verify the validity of a value prediction, and to recover from a value
mis-prediction [19].
Chapter 10 focuses an approach that overcomes data access latency and
data dependence by combining aggressive execution and value speculation.
It has been observed that many computations are performed repeatedly and
redundantly [20]. By dynamically removing such redundant computations,
the stalls due to memory latency and data dependences for those computa-
tions can be removed. The approach itself could be implemented as a non-
speculative mechanism (i.e., the block of computations could wait until all of
its live-in inputs are available before it determines whether or not the block
has been computed before, and thus redundant). However, using value predic-
tion for those live-in inputs can provide a significant performance advantage
and can allow us to take large speculative steps through the execution space.
Empirical data is presented in this chapter which demonstrates the potential
effectiveness of this scheme.

1.3 Compiler and Multithreading-Based Speculation


For most software-based speculative schemes, the compiler is a crucial and
indispensable component that impacts the effectiveness of the schemes. Chap-
ters 11 and 12 present recent developments in compiler technology that sup-
port speculation. In Chapter 13, issues related to the design of multithreaded
processors that support thread-level speculation are discussed.
Introduction 5

Chapter 11 presents how to utilize profiles during compilations. These


profiles include instruction-level control flow profiles such as the execution
frequency of basic blocks, control flow graph edge and path profiles [21]; path
and call graph profiles [22]; data access profiles such as memory character-
istics such as affinity profiles, cache profiles, hot data stream profile, alias
profile, data dependence profile and access stride profile [23, 24]; and value
profiles such as top-value profile and reuse profile. These profiles can be ob-
tained by either using software instrumentation or performance monitoring
hardware. However, to feed the profiling information back to the compiler
and use it effectively for compiler optimizations, we will need special support
in the compiler. The remainder of the chapter describes methods to use pro-
filing information to support compiler optimizations such as speculative code
scheduling that can improve instruction-level parallelism, and instruction and
data layout that can improve instruction cache and data cache performance.
The profiles can also be used by the compiler to support data prefetching,
thread-level speculation, speculative computation reuse and speculative pre-
computation for better cache memory performance.
In Chapter 12, a compiler framework is presented that supports both data
and control speculation for many common compiler optimizations using alias
analysis [25] and data dependence [26]. By providing profile-generated alias
and dependence information to the compiler, a number of optimizations can
be applied speculatively. If profiling only depends on a particular set of in-
puts used during the profile run, only a subset of the program execution is
profiled. This may produce incorrect assumptions if this information is used
during compilation. Instead, the compiler framework described in this chapter
uses speculative partial redundancy elimination (PRE) and shows how alias
profiling information can be used in PRE to improve its effectiveness and per-
formance. This chapter also touches on issues related to how well the compiler
can generate recovery code to produce correct results when mis-speculations
occur. The chapter also covers issues related to data dependence and alias
profiling.
Chapter 13 presents an overview of some recently proposed multithread-
ed processors [27] that support thread-level speculation. Even though these
processor architectures have multiple processing units, they are quite differen-
t from the traditional multiprocessors in the sense that their primary design
goal is on improving instruction-level parallelism (ILP) in the application pro-
grams, i.e., they are trying to improve the number of instructions executed in
each clock cycle. Hence, they are not concerned with issues such as scalability
to hundreds or thousands of processing units as in traditional multiprocessors.
They are mostly limited to a small number of processing units and are tar-
geting general-purpose applications. Using thread-level parallelism (TLP) to
enhance ILP speculatively for general-purpose applications presents an unique
challenge to the architecture design. This chapter gives a detailed account on
the design issues related to such machines.
6 Speculative Execution in High Performance Computer Architectures

1.4 Speculative Microarchitectures


In Chapters 14 and 15 we present two different approaches to instruction
and memory dependence from a system perspective. Chapter 14 looks at how
best to overcome data dependencies by issuing memory operations out of or-
der [28]. Obviously, this can introduce questions of coherency and consistency.
Chapter 14 presents a complete architecture that can be used to address data
memory stalls.
In Chapter 15 the concept of resource flow execution is described. The basic
idea is that instructions should be able to execute as soon as their dependen-
t operands are available. If we introduce speculation into this model, we
can further improve performance through aggressive execution. The authors
present the basic elements of the Levo microarchitecture [29].

References

[1] A. J. Smith. Cache Memories. Computing Surveys, 14(3):473–530,


September 1982.
[2] C.H. Perleberg and A.J. Smith. Branch target buffer design and opti-
mization. IEEE Transactions on Computers, 42(4):396–412, Apr. 1993.
[3] D.R. Kaeli and P.G. Emma. Branch history table prediction of moving
target branches due to subroutine returns. In Proceedings of the 18th
Annual International Symposium on Computer Architecture, pages 34–
42, May 27-30 1991.
[4] T.Y. Yeh and Y.N. Patt. Alternative implementations of two-level adap-
tive branch prediction. In Proceedings of the 19th Annual International
Symposium on Computer Architecture, pages 124–134, May 19-21 1992.
[5] J. Cocke, B. Randell, H. Schorr, and E.H. Sussenguth. Apparatus and
method in a digital computer for allowing improved program branch-
ing with branch anticipation, reduction of the number of branches, and
reduction of branch delays. U.S. Patent #3577189, assigned to IBM
Corporation, Filed Jan. 15, 1965, Issued May 4, 1971.
[6] Q. Jacobson, E. Rotenberg, and J.E. Smith. Path-based next trace
prediction. In Proceedings of the 30th Annual International IEEE/ACM
Symposium on Microarchitecture, pages 14–23, Dec. 1-3 1997.
Introduction 7

[7] G. Hinton, D. Sager, M. Upton, D. Boggs, D. Carmean, A. Kyker, and


P. Roussel. The microarchitecture of the pentium 4 processor. Intel
Technology Journal, Feb. 2001.
[8] A. Peleg and U. Weiser. Dynamic flow instruction cache memory or-
ganized around trace segments independent of virtual address line, Jan
1995.
[9] P. Y. Hsu and E. S. Davidson. Highly concurrent scalar processing. In
Proceedings of the 13th International Symposium on Computer Archi-
tecture, pages 386–395, June 1986.
[10] Inside the Intel Itanium 2 processor. Hewlett Packard Technical White
Paper, July 2002.
[11] A. Uht and V. Sindagi. Disjoint Eager Execution: An Optimal Form
of Speculative Execution. In Proc. of the 28th International Symposium
on Microarchitecture, Ann Arbor, MI, pages 313–325, Nov./Dec. 1995.
[12] T.F. Chen. Supporting highly speculative execution via adaptive branch
trees. In Fourth International Symposium on High-Performance Com-
puter Architecture, pages 185–194, Feb. 1-4 1998.
[13] C. Luk and T. C. Mowry. Compiler-Based Prefetching for Recursive
Data Structures. In the 7th International Conference on Architectural
Support for Programming Languages and Operating Systems, pages 222–
233, October 1996.
[14] A. Roth, A. Moshovos, and G. Sohi. Dependence Based Prefetching
for Linked Data Structures. In the 8th International Conference on Ar-
chitectural Support for Programming Languages and Operating Systems,
pages 115–126, October 1998.
[15] B. Calder and G. Reinman. A comparative survey of load speculation
architectures. Journal of Instruction-Level Parallelism, 1(39):2–40, Jan-
uary 2000.
[16] F. Gabbay and A. Mendelson. Using value prediction to increase the
power of speculative execution hardware. ACM Transactions Computing
Systems, 16(3):234–270, 1998.
[17] M.H. Lipasti and J.P. Shen. Exceeding the Dataflow Limit via Value
Prediction. In Proceedings of the 29th Annual ACM/IEEE International
Symposium on Microarchitecture, pages 226–237, December 1996.
[18] J. Gonzalez and A. Gonzalez. Control-Flow Speculation through Value
Prediction for Superscalar Processors. In International Conference on
Parallel Architectures and Compilation Technique, pages 57–65, Septem-
ber 1999.
8 Speculative Execution in High Performance Computer Architectures

[19] D. Balkan, J. Kalamatianos, and D. Kaeli. The Impact of Value Misspec-


ulation on Branch Resolution of Out-of-Order Processors. In Proceedings
of the 1st Annual Value Prediction Workshop, pages 3–9, June 2003.
[20] J. Yi, R. Sendag, and D. Lilja. Increasing Instruction-Level Parallelism
with Instruction Precomputation. In Proceedings of EuroPar, pages 481–
485, August 2002.
[21] T. Ball and J. Larus. Branch prediction for free. In Proceedings of
Programming, Language and Design Implementation, 1993.
[22] R. Hall. Call path profiling. In Proceedings of the 14th International
Conference on Software Engineering, Jun 1992.
[23] Y. Wu and Y.-F. Lee. Accurate invalidation profiling for effective data
speculation on epic processors. In 13th International Conference on
Parallel and Distributed Computing Systems, Aug. 2000. Vegas, Nevada.
[24] J. Lu, H. Chen, R. Fu, W.-C. Hsu, B. Othmer, P.-C. Yew, and D.-Y.
Chen. The performance of runtime data cache prefetching in a dynamic
optimization system. In Proceedings of the 36th Annual IEEE/ACM
International Symposium on Microarchitecture, Dec. 2003.
[25] T. Chen, J. Lin, W. Hsu, and P.-C. Yew. An Empirical Study on the
Granularity of Pointer Analysis in C Programs. In 15th Workshop on
Languages and Compilers for Parallel Computing, pages 151–160, July
2002.
[26] T. Chen, J. Lin, X. Dai, W. Hsu, and P.-C. Yew. Data Dependence Pro-
filing for Speculative Optimizations. In 13th International Conference
on Compiler Construction, March 2004.
[27] S. J. Eggers, J. S. Emer, H. M. Levy, J. L. Lo, R. L. Stamm, and D. M.
Tullsen. Simultaneous Multithreading: A Platform for Next-Generation
Processors. IEEE Micro, 17(5):12–19, Sept./Oct. 1997.
[28] A. Nicolau. Run-time disambiguation: Coping with statically unpre-
dictable dependencies. IEEE Transactions on Computers, 38(5):663–
678, May 1989.
[29] A.K. Uht, D. Morano, A. Khalafi, M. de Alba, and D. Kaeli. Levo
– A Scalable Processor with High IPC. Journal of Instruction Level
Parallelism, 5, Aug 2003.
Chapter 2
Instruction Cache Prefetching

Glenn Reinman
UCLA Computer Science Department

2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 Scaling Trends . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3 Instruction Cache Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4 Instruction Cache Prefetching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.5 Future Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2.1 Introduction
Instruction delivery is a critical component of modern microprocessors.
There is a fundamental producer/consumer relationship that exists between
the instruction delivery mechanism and the execution core of a processor.
A processor can only execute instructions as fast as the instruction delivery
mechanism can supply them.
Instruction delivery is complicated by the presence of control instructions
and by the latency and achievable bandwidth of instruction memory. This
Chapter will focus on the latter problem, exploring techniques to hide in-
struction memory latency with aggressive instruction cache prefetching.

2.2 Scaling Trends


Interconnect is expected to scale poorly due to the impact of resistative
parasitics and parasitic capacitance. The latency of a memory device, to a first
order, is the latency to exercise the logic in the decoder, assert the wordline
wire, read the memory cell logic, assert the bitline wire, and finally exercise
the logic in the bitline multiplexor to select the accessed data. As the process
feature size is scaled, the latency of the transistors is scaled proportional

9
10 Speculative Execution in High Performance Computer Architectures

Branch
Predictor instruction
PC mask
to
Instruction
cache line execution
Cache
core

Instruction Delivery
FIGURE 2.1: Instruction delivery mechanism: High level view of the struc-
tures of the front-end.

to their size, thus the latency of the logic scales linearly with feature size
reductions.
The latency of the wordlines and bitlines, on the other hand, does not scale
as well due to parasitic capacitance effects that occur between the closely
packed wires that form these buses. As the technology is scaled to smaller
feature sizes, the thickness of the wires does not scale. As a result, the parasitic
capacitance formed between wires remains fixed in the new process technology
(assuming wire length and spacing are scaled similarly).
Since wire delay is proportional to its capacitance, signal propagation delay
over the scaled wire remains fixed even as its length and width are scaled.
This effect is what creates the interconnect scaling bottleneck. Since on-chip
memory tends to be very wire congested (wordlines and bitlines are run to
each memory cell), the wires in the array are narrowly spaced to minimize the
size of the array. As a result, these wires are subject to significant parasitic
capacitance effects. Agarwal et al. [AHKB00] conclude that architectures
which require larger components will scale more poorly than those with s-
maller components. They further conclude that larger caches may need to
pay substantial delay penalties.

2.3 Instruction Cache Design


Figure 2.1 illustrates a typical instruction delivery mechanism. A coupled
branch predictor and instruction cache are accessed in parallel with the ad-
dress contained in the program counter (PC). The PC stores a pointer to
the next instruction in memory that is to be executed. The program itself is
Instruction Cache Prefetching 11

loaded into a portion of memory, and the PC represents the memory address
where a given instruction is stored.
The instruction cache stores a subset of the instructions in memory, dy-
namically swapping lines of instructions in and out of the cache to match the
access patterns of the application. The size of the lines that are swapped in
and out of the cache depend on the line size of the cache. Larger line sizes
can exploit more spatial locality in instruction memory references, but con-
sume more memory bandwidth on cache misses. The line size, along with the
associativity and number of sets of the cache, influences the size, latency, and
energy consumption of the cache on each access.
The more instruction addresses that hit in the instruction cache, the more
memory latency that can be hidden. However, architects must balance this
against the latency and energy dissipation of the cache. The latency of the
instruction cache access impacts the branch misprediction pipeline loop of
the processor. Therefore, the processor must be designed to make the most
efficient use of the available cache space to maximize latency reduction.
Unlike data cache misses, where aggressive instruction scheduling and large
instruction windows can help hide memory access latency, instruction cache
misses are more difficult to tolerate. Instructions are typically renamed in
program order, which means that a single instruction cache miss can stall the
pipeline even when subsequent accesses hit in the cache.
Typically the line size is selected based on the target bandwidth required to
feed the execution core. An entire cache line is driven out, and a contiguous
sequence of instructions are selected from this line based on branch prediction
information and the starting PC.
Figure 2.2 demonstrates some alternatives for instruction cache design.
These alternatives differ in the latency and energy efficient of the cache, and
in the complexity of the implementation.

2.3.1 Direct Mapped Cache


In a direct mapped cache, any given address maps to only one location in
the cache. This cache can be impacted more severely by conflict misses, but
is fast to access and is energy efficient. Each address can only map to one
location in the cache. On an access, the data component drives out the cache
line in that one location and the tag component determines whether or not
there is a match.

2.3.2 Set Associative Cache


In a set associative cache, any given address can map to more than one
location in the cache. This cache has better tolerance of conflict misses, but
can take longer to access than the direct mapped cache. There are two main
types of set associative caches: serial and parallel access.
12 Speculative Execution in High Performance Computer Architectures

address
Direct Tag Data
Mapped
valid? cache line

address
Serial way
Tag Data
Access select cache line
Set
Associative
address
Parallel Tag Data
Access
way select cache line

address
Cycle 1 Tag Data

Pseudo valid? cache line


Associative
Cycle 2 Tag Data
rehash

valid? cache line

Way
Predictor
Way address way
Prediction = select
Tag Data
way cache line
valid?

FIGURE 2.2: Different instruction cache designs, trading hit coverage,


timing, area, energy, and complexity.
Instruction Cache Prefetching 13

A serial access cache does not overlap the tag and data component accesses
as in the direct mapped cache and therefore will have longer latency. But the
energy efficiency is close to that of a direct mapped cache since at most one
line will be driven out of the data component per access. In fact, it may even
provide an energy benefit over the direct mapped cache since there must be a
cache hit for a cache line to be driven out. This benefit would depend on how
often the cache misses and how much of an energy impact the associative tag
comparison has.
A parallel access cache approaches the latency benefits of the direct mapped
cache, as the latency of this cache is the maximum of the tag and data com-
ponent latency, plus some delay for the output driver. However this cache
can use dramatically more energy than the direct mapped cache. On a given
access to an n-way set associative cache, n different cache lines will be driven
to the data output part of the cache until the tag component can select one.

2.3.3 Pseudo Associative Cache


One approach to providing set associative performance with the energy and
timing benefits of a direct mapped cache is the pseudo associative cache. This
direct mapped cache features multiple hash functions to index into the cache.
For example, consider a cache with two hash functions. On a cache access,
if the first hash function sees a cache miss, the second hash function is used
to initiate a second access in the next cycle. When the first hash function
hits, the access only takes a single cycle. But when the second hash function
is used, the access takes two cycle and subsequent accesses must be stalled
for one cycle. When the second pseudo associative access results in a hit, the
cache line stored in the primary location for that address (i.e., the location
indicated by the first hash function) is swapped with the cache line stored
in the secondary location for that address (i.e., the location indicated by the
second hash function).
One challenge of pseudo associative cache design is reducing the number
of times that there is a miss on the first access. The other main challenge is
performing the swap on a second access hit. However, such a cache can often
compare favorably to a multicycle set associative cache. The energy impact of
multiple cache accesses can often be tempered by the reduction in per access
energy.

2.3.4 Way Prediction Cache


This cache approaches the problem of finding a middle ground between
direct mapped timing and energy benefits with set associative performance in
a different way. This approach starts with a set associative cache, but uses a
small predictor called a way predictor to guess in what way the desired cache
line will be found. The tag component is accessed in parallel with the way
predictor to verify the guess. In order for the design to make sense, the way
14 Speculative Execution in High Performance Computer Architectures

predictor time must be much less than the tag component, to parallelize the
tag and data component accesses as much as possible. If the way prediction
is correct, only a single cache line will be driven out of the data component,
providing the energy benefits of the serial access set associative cache with
the timing benefits of the parallel access set associative cache. However, if the
way prediction is wrong, the correct cache line will be driven in the following
cycle based on the tag access. In this case, the latency of the access is no
worse than the serial access set associative cache, but the energy dissipation
is slightly worse since two cache lines are driven on a way misprediction. The
way predictor must be designed to be fast enough to parallelize the access
time to the cache components, small enough to avoid contributing to energy
dissipation, but large enough to provide reasonable prediction accuracy.

2.4 Instruction Cache Prefetching


Without any form of prefetching, cache lines are only brought in on de-
mand. These types of misses are known as demand misses. The challenge of
prefetching is to hide the latency of a future cache miss as much as possible
before the miss occurs, but without impacting demand misses. The goal is to
bring the right line into the cache before it is needed. Prefetch schemes can be
evaluated based on their accuracy and their timeliness. Prefetch accuracy is
critical: it is a waste of memory bandwidth and cache space to bring in lines
that will not be used before their eviction from the cache. Timeliness is also
key: if a cache line is prefetched only a few cycles before that line is to be
used, there is little latency hidden by the prefetch. If a prefetch is started too
far in advance, the line may be evicted before it is even used. The following
techniques have been proposed to guide instruction cache prefetch or tolerate
instruction cache latency.
To better evaluate the following approaches, Figure 2.3 demonstrates a
sample instruction address stream. The stream starts at address 992 and
continues beyond address 800. For the stream of addresses, assume that 992
and 576 are the only addresses that begin in the instruction cache – the
remaining addresses in the stream will be instruction cache misses.

2.4.1 Next Line Prefetching

The most natural instruction cache prefetching strategy is to simply fetch


the next consecutive cache line from memory. For example, if the instruction
cache line size is 32 bytes, and if the processor is currently fetching cache line
address x from the instruction cache, then line x+32 would be prefetched.
Instruction Cache Prefetching 15

992, 512, 544, 576, 352, 384, 416, 768, 800, ...
TIME
FIGURE 2.3: Sample instruction address stream: This sample stream of
cache line addresses will be used in subsequent figures. The stream starts
with instruction memory address 992.

To limit the number of prefetches, Smith [Smi82] suggested that each in-
struction cache line be augmented with a single bit to indicate whether or not
the next consecutive line should be prefetched. On an instruction cache miss,
the bit for the line that missed would be set. On a cache access, if the bit
is set for the line that is read from the cache, the next sequential cache line
would be prefetched from memory, and the bit for the current line would be
cleared.
For the sample instruction stream shown in Figure 2.3, next line prefetching
would capture the misses at 544, 384, 416, and 800.

2.4.2 Target Prefetching


Instruction memory references are not always contiguous, and control in-
structions can reduce the accuracy of next line prefetching. Hsu [HS98] en-
hanced next line prefetching with target prefetching. They used a line target
prediction table to guide what cache line typically follows the current cache
line. If the table predicts a next line, that line can then be prefetched while
the current cache line is fetched. Target and next line prefetching can work
together, either by selectively applying one technique for a given cache line
or by using both approaches together on the same cache line, potentially
prefetching two lines (a next and a target) for a given cache line.
As observed by [HS98], next line prefetching exploits the same spatial lo-
cality that makes larger line sizes attractive for instruction caches. Together
with target prefetching, this relatively simple approach can provide high accu-
racy. However, recent demands on fetch bandwidth and the growing latency
to memory can impact the timeliness of these approaches, as the next line
may be required in the next cycle of fetch.
With correct branch prediction, Target and Next line prefetching would be
able to start a prefetch for all of the misses in the sample instruction stream
of Figure 2.3, but would likely start these prefetches too late to hide most of
the memory latency of these accesses.

2.4.3 Stream Buffers


Jouppi [Jou90] originally proposed the use of stream buffers to improve
the performance of direct mapped caches. On a cache miss, a stream of se-
16 Speculative Execution in High Performance Computer Architectures

quential cache lines, starting with the line that missed, are prefetched into
a small, FIFO queue (the stream buffer). The prefetch requests are over-
lapped, so the latency of the first line that misses can hide the latency of
any subsequent misses in the stream. Subsequent work has considered ful-
ly associative stream buffers [FJ94], non-unit stride prefetches of sequential
cache lines [PK94], and filtering unnecessary prefetches that already exist in
the instruction cache [PK94]. This latter enhancement is critical in reduc-
ing the number of prefetches generated by stream buffers. Idle cache ports
or replicated tag arrays can be used to perform this filtering. A redundant
prefetch (one that already exists in the instruction cache) not only represents
a wasted opportunity to prefetch something useful, but also represents wast-
ed memory bandwidth that could have been used to satisfy a demand miss
from the instruction or data cache, or even a data cache prefetch. Multiple
stream buffers can be coordinated together and probed in parallel with the
instruction cache for cache line hits.
With a conventional stream buffer approach, contiguous addresses will be
prefetched until the buffer fills. The buffer must then stall until one of the
cache lines in the buffer is brought into the cache (on a stream buffer hit)
or until the buffer itself is reallocated to another miss. Confidence counters
associated with each buffer can be used to guide when a buffer should be
reallocated. One policy might be to use one saturating two-bit counter with
each stream buffer. On a stream buffer hit, the counter for that buffer is
incremented. When all stream buffers miss, the counters for all buffers is
decremented. On a cache miss (and when all stream buffers miss), a stream
buffer is selected for replacement if the counter for that stream buffer is cur-
rently 00. If no stream buffers exist with a cleared confidence counter (set to
00), then a buffer is not allocated for that cache miss. The counters would not
overflow or underflow. This policy would allow stream buffers that are suc-
cessfully capturing the cache miss pattern of the incoming instruction address
to continue prefetching cache lines, and would deallocate buffers that are no
longer prefetching productive streams. Similar policies can also be used to
guide what stream buffer should be allowed access to a shared memory or L2
port for the next prefetch request.
Figure 2.4 demonstrates the stream buffer in action on our instruction
stream example. The PC, instruction cache, result fetch queue, and four
stream buffer entries are shown. The V field in the stream buffer indicates
that the entry is valid and is tracking an in-flight cache line. The R field in
the stream buffer indicates that the entry is ready – that it has arrived from
the other levels of the memory hierarchy.
Cycle k sees a successful cache access for address 992. In cycle k+1, the
instruction cache misses on address 512, stalling fetch. A stream buffer is
allocated for the miss. Each cycle, the next contiguous cache line in memory
is brought into the cache. Assuming that the stream buffer uses the filtering
approach of [PK94], address 576 will not be brought into the stream buffer
since it already exists in the instruction cache. Eventually, the stream buffer
Instruction Cache Prefetching 17

Cycle 992 Stream Buffer V R


PC 0 0
Instruction
Cache 0 0
k 0 0
0 0

Cache hit on address 992

512 Stream Buffer V R


PC 512 1 0
Instruction
Cache 0 0
k+1
0 0
0 0
Cache miss on address 512 – stream buffer allocated – cache stalls

512 Stream Buffer V R


PC 512 1 0
Instruction
k+2 Cache 544 1 0
0 0
0 0
Stream buffer prefetches next contiguous instruction address: 544

512 Stream Buffer V R


PC 512 1 1
Instruction
k+21 Cache 544 1 0
608 1 0
640 1 0
512 is ready and delivered to the execution core

FIGURE 2.4: The stream buffer in action on the first part of the example
from Figure 2.3.
18 Speculative Execution in High Performance Computer Architectures

PC
result
fetch
queue to
Instruction
execution
Cache
core
MSHR

L2
Cache
FIGURE 2.5: Out-of-order fetch architecture with a lockup-free instruc-
tion cache.

prefetches address 608, which is not referenced in the example in Figure 2.3.
In this example, the stream buffer would fill with addresses that are not
referenced in the near future, and assuming only a single stream buffer, this
buffer would likely be reallocated to a new miss stream. However, there may
be some benefit to these prefetches even if the buffer is reallocated, as they
may serve to warm up the L2 cache.

2.4.4 Nonblocking Caching and Out-of-Order Fetch


In [Kro81], Kroft proposed a cache architecture that could continue to op-
erate in the presence of a cache miss. This lockup-free instruction cache used
a number of cache line buffers - known as miss information status history
registers or MSHRs - to track in-flight cache misses (i.e., those that have not
yet returned from the levels of the memory hierarchy). On a cache miss, an
available MSHR is allocated to the address that missed and maintains this
request until it can be satisfied and installed in the instruction cache. This
approach left the instruction cache free to service other requests. The number
of in-flight misses was limited by the number of available MSHRs. Nonblock-
ing can help to alleviate the memory latency without some of the downsides
of prefetching. It is more of a slave mechanism that can handle more cache
accesses during cache misses.
Stark et al. [SRP97] extended the idea of lockup-free caches as an alternative
to instruction cache prefetching called out-of-order instruction fetch. This ar-
chitecture is illustrated in Figure 2.5. Instructions can be fetched out-of-order
from the instruction cache into a result fetch queue. When the instruction
cache misses, an MSHR is allocated for the missed address. Their fetch ar-
Instruction Cache Prefetching 19

chitecture continues to supply instructions after the cache miss to the result
queue. A placeholder in the queue tracks where instructions in in-flight cache
lines will be placed once they have been fetched from other levels of the mem-
ory hierarchy. However, this architecture still maintains in-order semantics
as instructions leave this queue to be renamed. If the next instruction in the
result queue to be renamed/allocated is still in-flight, renaming/allocation
will stall until the instructions return from the other levels of the memory
hierarchy.
Out-of-order fetch requires more sophistication in the result fetch queue
implementation to manage and update the placeholders from the MSHRs,
and to stall when a placeholder is at the head of the result queue (i.e., the
cache line for that placeholder is still in-flight).
Figure 2.6 illustrates our example address stream on the out-of-order fetch
architecture. The PC, instruction cache, result fetch queue, and four MSHRs
are shown. The V field in the MSHR indicates that the entry is valid and
is tracking an in-flight cache line. The R field in the MSHR indicates that
the entry is ready – that it has arrived from the other levels of the memory
hierarchy.
Cycle k sees a successful cache access for address 992, and that cache line
is placed in the result fetch queue. In cycle k+1, address 512 misses in the
instruction cache and is allocated to an MSHR. A placeholder for this line is
installed in the result fetch queue. If there are no other lines in the result fetch
queue, stages fed by this queue must stall until the line is ready. However,
instruction fetch does not stall. In the next cycle, address 544 also misses in
the cache and is also allocated an MSHR. A placeholder for this address is
also placed in the queue. In cycle k+3, address 576 hits in the cache, and
the corresponding cache line is placed in the queue. The stages that consume
entries from this queue (i.e., rename) must still stall since they maintain in-
order semantics and must wait for the arrival of address 512. Once the cache
line for address 512 arrives, it will be placed in the instruction cache and
the MSHR for that address will be deallocated. In this simple example, the
latency of the request for address 512 helped to hide the latency of 544, 320,
and 352. More address latencies could be hidden with more MSHR entries and
assuming sufficient result fetch queue entries. This approach is also heavily
reliant on the branch prediction architecture to provide an accurate stream of
instruction addresses.
The similarity between MSHRs and stream buffers should be noted, as both
structures track in-flight cache lines. The key difference is that MSHRs track
demand misses and only hold instruction addresses, while stream buffers hold
speculative prefetches and hold the actual instruction memory itself.

2.4.5 Fetch Directed Instruction Prefetching


Another approach is to guide stream buffer allocation with the instruction
fetch stream. Chen et al. [CLM97] used a lookahead branch predictor to guide
20 Speculative Execution in High Performance Computer Architectures

Cycle 992 MSHRs V R


PC 0 0 result fetch queue
Instruction
0 0

992
Cache
k 0 0
0 0

Cache hit – cache line 992 placed in fetch queue

512 MSHRs V R
PC 512 1 0 result fetch queue
Instruction
k+1 Cache 0 0 P
0 0
0 0

Cache miss – start demand fetch of 512 – placeholder in fetch queue

544 MSHRs V R
PC 512 1 0 result fetch queue
Instruction
Cache 544 1 0 P P
k+2
0 0
0 0

Cache miss – start demand fetch of 544 – placeholder in fetch queue

384 MSHRs VR
PC 512 1 1
Instruction
512
576

Cache 544 1 0 P P P
k+21
320 1 0
result fetch queue
352 1 0
512 is ready and delivered out of order to fetch queue

FIGURE 2.6: Out-of-order fetch in action on the first part of the example
from Figure 2.3.
Instruction Cache Prefetching 21

fetch
target
queue to
Branch Instruction
PC execution
Predictor Cache
core
Stream Buffer

L2
Cache
FIGURE 2.7: The fetch directed prefetching architecture.

instruction cache prefetch. Reinman et al. [RCA99] further explored this


approach by decoupling the main branch predictor from the instruction cache
rather than using a smaller, separate predictor. They used the stream of fetch
addresses from this predictor to prefetch the instruction cache. The benefit
of this approach is that the same predictor that guides instruction fetch is
used to guide instruction prefetch. Aggressive branch prediction designs have
improved predictor accuracy, and the benefit obtainable through prefetching
is heavily reliant on the accuracy of the prefetches made. As in stream buffer
prefetching, idle or replicated instruction cache tag ports are used to filter out
redundant prefetches in such schemes.
Figure 2.7 illustrates the architecture of [RCA99]. The branch predictor
and instruction cache are decoupled via a queue of fetch target addresses, the
fetch target queue. The entries in this queue are used to guide instruction
cache prefetching into a FIFO or fully associative stream buffer. The buffer
is probed in parallel with the instruction cache.
Figure 2.8 demonstrates the performance of the fetch directed prefetching
architecture on our example address stream. The fetch target queue supplies
instruction addresses from the branch predictor to the instruction cache. The
arrow under the queue indicates the cache line currently under consideration
for prefetch. In cycle k, cache line 992 is fetched from the instruction cache
while cache line 512 is under considering for prefetch. Address 512 is not
found in the instruction cache using cache probe filtering and is prefetched.
In the next cycle, the cache misses on address 512 and stalls until this miss is
satisfied. In the same cycle, a prefetch is initiated for address 544. Prefetching
continues guided by the fetch target queue up until the stream buffer is full.
Once 512 is fetched from the next level of memory, fetch can continue.
Fetch directed prefetching and out-of-order fetch are very similar, but there
are some key differences. Out-of-order fetch is limited by the number of avail-
able MSHRs, just as fetch directed prefetching is limited by the number of
available stream buffer entries. But out-of-order fetch is also limited by the
22 Speculative Execution in High Performance Computer Architectures

Cycle Stream Buffer V R


fetch target queue 512 1 0
Instruction
352
320
576
544
512
992

Cache 0 0
k 0 0
0 0
Cache hit on 992
Prefetch miss on 512 – allocate stream buffer entry

Stream Buffer V R
fetch target queue 512 1 0
Instruction
352
320
576
544
512

Cache 544 1 0
k+1
0 0
0 0
Cache miss on 512 – cache stalls
Prefetch miss on 544 – allocate stream buffer entry

Stream Buffer V R
fetch target queue 512 1 0
Instruction
352

576
544
320

512

Cache 544 1 0
k+2 0 0
0 0

Prefetch hit on 576 – no prefetch

Stream Buffer V R
fetch target queue 512 1 1
Instruction
352
320
576
544
512

Cache 544 1 0
k+20 320 1 0
352 1 0

512 is ready and delivered to the execution core

FIGURE 2.8: The fetch directed prefetching architecture in action on the


first part of the example from Figure 2.3.
Instruction Cache Prefetching 23

number of entries in the result fetch queue, a structure which stores instruc-
tions. Fetch directed prefetching is limited by the number of entries in the
fetch target queue, a structure which stores fetch addresses. Occupancy in ei-
ther of these queues allows these mechanisms to look further ahead at the fetch
stream of the processor and tolerate more latency, but the fetch target queue
uses less space for the same number of entries. Fetch directed prefetching is
only limited by the bandwidth of the branch predictor. To scale the amount
of prefetching, the branch predictor need only supply larger fetch blocks. To
scale prefetching with accurate filtering, the tag component of the cache must
have more ports or must be replicated. In order to scale the number of cache
lines that can be allocated to MSHRs by out-of-order fetch in a single cycle,
the branch predictor bandwidth must be increased and the number of ports
on the instruction cache must increase.
One other difference is that prefetches can often start slightly before out-
of-order fetches. Since prefetching is a lookahead mechanism, a prefetch can
be initiated at the same time that a cache line is fetched from the instruction
cache. This is illustrated in the simple example of Figure 2.8 where address
512 is prefetched one cycle earlier than in out-of-order fetch.

2.4.6 Integrated Prefetching


One drawback to both fetch directed prefetching and out-of-order fetch is
the complexity of the queue structures. Fetch directed prefetching uses a
queue that can initiate a prefetch from any entry of the queue. Moreover, the
tag component of the instruction cache is accessed twice for each cache line
address – once to determine whether or not to prefetch a given cache line, and
once during the actual instruction cache access.
One alternative to this policy is to more closely integrate instruction prefetch-
ing with the design of the instruction cache, as in [RCA02]. The approach
of [RCA02] is to decouple the tag and data component of the instruction cache
from one another via a queue of cache line requests (the cache block queue).
For every cache access, the tag component determines the cache way where a
given cache line resides (if any). If it is in the cache, it places the requested
address and way in the cache block queue. The data component can then
consume this information from the queue and provide the requested line.
Since the tag is only checked once, additional hardware is necessary to
ensure that the verified cache lines stored in the cache block queue are not
evicted from the cache before they are read from the data component of the
cache. This mechanism is the cache consistency table (CCT). The CCT has as
many sets and as much associativity as the instruction cache, but only stores 3
bits per line in the CCT. A 64KB 4-way set associative instruction cache would
only need a 768B CCT. Each time a cache line is verified by the tag component,
the CCT line corresponding to that cache line is incremented. Each time a
cache line is provided by the data component, the CCT line corresponding to
that cache line is decremented. On a cache replacement, a line will not be
24 Speculative Execution in High Performance Computer Architectures

kicked out if its CCT entry is not zero. If the CCT entry saturates, the tag
component will not verify any more requests for that cache line until the CCT
counter is decremented for that entry. In addition to providing a consistency
mechanism, the CCT also provides an intelligent replacement policy. The tag
component does not stall on an instruction cache miss, and therefore it can
run ahead of the data component. The CCT then reflects the near future
use pattern of the instruction cache, and can help guide cache replacement.
The larger the cache block queue, the further ahead the CCT can look at
the incoming fetch stream. This of course requires accurate branch prediction
information.
On a cache miss, the integrated prefetching mechanism allocates an entry
in the stream buffer. The stream buffer can bring in the requested cache
line while the tag component of the cache continues to check the incoming
fetch stream. Once the missed cache line is ready, it can either be installed
into the instruction cache (if the CCT can find a replacement line) or can
be kept in the stream buffer. This allows the stream buffer to be used as a
flexible repository of cache lines, providing extra associativity for cache sets
with heavy thrashing behavior.
Figure 2.9 demonstrates the integrated prefetching architecture of [RCA02].
The stream buffer is also decoupled, and requires a CCT of its own to guide
replacement. The tag components of both the stream buffer and instruction
cache are accessed in parallel. There is a single shared cache block queue to
maintain in-order fetch. Each entry in the cache block queue is consumed by
the data component of both the instruction cache and stream buffer. However,
only one of the two data components will be read depending on the result of
the tag comparison.

2.4.7 Wrong-Path Prefetching


Many of the prefetching techniques described in this chapter rely on accu-
rate branch prediction to capture the instruction fetch address stream. How-
ever, no branch predictor is perfect, and mispredictions must be handled.
While the cache block queue, fetch target queue, or result fetch queue would
all be flushed on a misprediction, flushing the stream buffers might throw
away potentially beneficial prefetches. Pierce and Mudge [PM96] found that
prefetching on incorrectly speculated branch paths can actually be beneficial
in many cases. If a branch is predicted to be taken when it is actually not
taken, it may be taken at a later point in time. If addresses on the taken path
are prefetched and waiting in a stream buffer, these may avoid cache misses
when the branch is seen to be taken later. For example, consider a frequently
executed while loop. If control is mispredicted to exit the while loop, and the
instructions following the loop are prefetched, then that will hide the latency
seen when the while loop actually is exited. Another case where wrong path
prefetches can help is when short forward branches are mispredicted. The
caveat here is that the wrong path prefetch may be evicted by prefetches on
Instruction Cache Prefetching 25

Instruction Cache

CCT

Tag Data
Array Array

instruction to
addresses execution
Cache Block Queue core

Tag Data
Array Array

CCT

Stream Buffer

FIGURE 2.9: Integrated prefetching architecture: The cache and stream


buffer tag components are decoupled from their respective data components.
Cache and stream buffer replacement are both guided by the cache consistency
tables (CCT) for the respective structures. If both the cache and stream buffer
miss, the desired line is brought into the stream buffer from the L2 or main
memory.
26 Speculative Execution in High Performance Computer Architectures

the correct path, and that the wrong path prefetch may itself evict useful
blocks.
One way to preserve entries in the stream buffers, but still allow new
prefetch requests, is to add another bit to each stream buffer entry that in-
dicates whether or not that entry is replaceable or not. If the bit is set, that
means that while the entry may be valid, it is from an incorrectly speculated
path. Therefore, it may be overwritten if there is demand for more prefetches
or misses. But assuming the entry is valid and ready, it should still be probed
on stream buffer accesses to see if there is a wrong-path prefetch hit.

2.4.8 Compiler Strategies


Compiler directed approaches have also been proposed to help tolerate in-
struction cache misses. One common approach is code reordering, where
instruction memory is laid out to keep the most frequently taken control path
as a contiguous stream of instruction addresses [PH90, HKC97]. By keeping
the most frequently taken control path as one sequential instruction address
stream, simple techniques like stream buffers or next line prefetching become
more effective. This of course requires some compiler heuristic or prefetching
to determine the most frequently taken control path. Such work can also help
to reduce the conflict misses seen in the instruction cache by restructuring the
application to keep code frequently executed together in separate cache sets.
Similarly, procedure inlining [CL99] replaces the actual procedure call with
the entire body of the procedure call. While this can increase the overall code
size, it also reorders the code so that simple instruction prefetchers can follow
a contiguous pattern of instruction stream references.
Another approach is to use explicit prefetch instructions in the ISA. Such
instructions can be placed at strategic points in the code where prefetches
should be initiated for good timeliness. The limitation is how accurately
static techniques can predict the control flow of an application at run time.
The Itanium processor [MS03] makes use of two types of software prefetch
instructions: hints and streams. A hint prefetches between 12-48 instructions
depending on the type (brp.few or brp.many) and streams continue to prefetch
contiguous instruction cache blocks until redirected.
We will explore more compiler strategies in Chapter 4.

2.5 Future Challenges


Instruction cache prefetching has seen improvements in both accuracy and
timeliness of prefetches, but there is still room for improvement. Memory
usage of applications has been growing recently, spurred on by the increasing
Instruction Cache Prefetching 27

memory capacity projected in future processors. However, as clock rates be-


come more aggressive, the latency impact of instruction caches may prevent
these caches from growing large enough to meet increased application demand.
This will require more intelligent and flexible instruction delivery mechanisms
to take advantage of application locality. Multiple application threads may
also contribute to this problem, requiring architects to devise novel approach-
es to warm up threads on context switches. On an SMT machine, what is the
best way to use available memory bandwidth and accelerate the particular
thread mix in the processor? Researchers are also exploring application spe-
cific customization of instruction caches and prefetching policies to individual
program phases or compiler directed hints.

References

[AHKB00] V. Agarwal, M. Hrishikesh, S. Keckler, and D. Burger. Clock


rate versus ipc: The end of the road for conventional microarchi-
tectures. In 27th Annual International Symposium on Computer
Architecture, 2000.

[CL99] R. Cohn and P. Lowney. Feedback directed optimization in com-


paq’s compilation tools for alpha. In In Proceedings of the 2nd
Workshop on Feedback-Directed Optimization, 1999.

[CLM97] I.K. Chen, C.C. Lee, and T.N. Mudge. Instruction prefetching
using branch prediction information. In International Conference
on Computer Design, pages 593–601, October 1997.

[FJ94] K. Farkas and N. Jouppi. Complexity/performance tradeoffs with


non-blocking loads. In 21st Annual International Symposium on
Computer Architecture, pages 211–222, April 1994.

[HKC97] A. Hashemi, D. Kaeli, and B. Calder. Efficient procedure mapping


using cache line coloring. In In Proceedings of the ACM SIGPLAN
Conference on Programming Language Design and Implementa-
tion, 1997.

[HS98] W. Hsu and J. Smith. A performance study of instruction cache


prefetching methods. In IEEE Transactions on Computers, 47(5,
May 1998.

[Jou90] N. Jouppi. Improving direct-mapped cache performance by the


addition of a small fully associative cache and prefetch buffers.
28 Speculative Execution in High Performance Computer Architectures

In Proceedings of the 17th Annual International Symposium on


Computer Architecture, May 1990.
[Kro81] D. Kroft. Lockup-free instruction fetch/prefetch cache organiza-
tion. In 8th Annual International Symposium of Computer Archi-
tecture, pages 81–87, May 1981.
[MS03] C. McNairy and D. Soltis. Itanium 2 processor microarchitecture.
In IEEE Micro, March/April 2003.
[PH90] K. Pettis and R. Hansen. Profile guided code positioning. In In
Proceedings of the ACM SIGPLAN Conference on Programming
Language Design and Implementation, 1990.
[PK94] S. Palacharla and R. Kessler. Evaluating stream buffers as sec-
ondary cache replacement. In 21st Annual International Sympo-
sium on Computer Architecture, April 1994.
[PM96] J. Pierce and T. Mudge. Wrong-path instruction prefetching. In
29th International Symposium on Microarchitecture, pages 165–
175, December 1996.
[RCA99] G. Reinman, B. Calder, and T. Austin. Fetch directed instruction
prefetching. In 32nd International Symposium on Microarchitec-
ture, November 1999.
[RCA02] G. Reinman, B. Calder, and T. Austin. High performance and
energy efficient serial prefetch architecture. In In the Proceedings
of the 4th International Symposium on High Performance Com-
puting, May 2002.
[Smi82] A. J. Smith. Cache memories. Computing Surveys, 14(3):473–530,
September 1982.
[SRP97] J. Stark, P. Racunas, and Y. Patt. Reducing the performance im-
pact of instruction cache misses by writing instructions into the
reservation stations out-of-order. In Proceedings of the 30th Inter-
national Symposium on Microarchitecture, pages 34–45, December
1997.
Other documents randomly have
different content
l’assiette, ou nous allons nous dissiper en fumée comme larves et lémures
quand chante le coq et retourne le soleil.
—Il ne serait point décent de manger la friture avant le potage, ce serait
mettre culinairement la charrue devant les bœufs, fit maître Chirriguirri
d’un air de suprême dédain, et Vos Seigneuries sont trop bien élevées pour
se permettre des incongruités semblables. Patience, la garbure a besoin
encore d’un bouillon ou deux.
—Cornes du diable et nombril du pape! beugla le Tyran, je me
contenterais d’un brouet lacédémonien s’il était servi sur l’heure!»
Le baron de Sigognac ne disait rien et ne témoignait aucune impatience;
il avait mangé la veille! Dans les longues disettes de son château de la faim,
il s’était de longue main rompu aux abstinences érémitiques, et cette
fréquence de repas étonnait son sobre estomac. Isabelle, Sérafine ne se
plaignaient pas, car la montre de voracité ne sied point aux jeunes dames,
lesquelles sont censées se repaître de rosée et suc de fleurs comme avettes.
Le Matamore, soigneux de sa maigreur, semblait enchanté, car il venait de
resserrer son ceinturon d’un point, et l’ardillon de la boucle claquait
librement dans le trou du cuir. Le Léandre bâillait et montrait les dents. La
Duègne s’était assoupie, et sous son menton penché regorgeaient en
boudins trois plis de chair flasque.
La petite fille, qui dormait à l’autre bout du banc, s’était réveillée et
redressée. On pouvait voir son visage qu’elle avait dégagé de ses cheveux
qui semblaient avoir déteint sur son front tant il était fauve. Sous le hâle de
la figure perçait une pâleur de cire, une pâleur mate et profonde. Aucune
couleur aux joues, dont les pommettes saillaient. Sur les lèvres bleuâtres,
dont le sourire malade découvrait des dents d’une blancheur nacrée, la peau
se fendillait en minces lamelles. Toute la vie paraissait réfugiée dans les
yeux.
La maigreur de sa figure faisait paraître ses yeux énormes, et la large
meurtrissure de bistre qui les entourait comme une auréole leur donnait un
éclat fébrile et singulier.—Le blanc en paraissait presque bleu, tant les
prunelles y tranchaient par leur brun sombre, et tant la double ligne de cils
était épaisse et fournie. En ce moment ces yeux étranges exprimaient une
admiration enfantine et une convoitise féroce, et ils se tenaient
opiniâtrement fixés sur les bijoux de l’Isabelle et de la Sérafine, dont la
petite sauvage, sans doute, ne connaissait pas le peu de valeur. La
scintillation de quelque passementerie d’or faux, l’orient trompeur d’un
collier en perles de Venise, l’éblouissaient et la tenaient comme dans une
sorte d’extase. Évidemment elle n’avait, de sa vie, rien vu de si beau. Ses
narines se dilataient, une faible rougeur lui montait aux joues, un rire
sardonique voltigeait sur ses lèvres pâles, interrompu de temps à autre par
un claquement de dents fiévreux, rapide et sec.
Heureusement personne de la compagnie ne regardait ce pauvre petit tas
de haillons secoué d’un tremblement nerveux, car on eût été effrayé de
l’expression farouche et sinistre imprimée sur les traits de ce masque livide.
Ne pouvant maîtriser sa curiosité, l’enfant étendit sa main brune, délicate
et froide comme une main de singe, vers la robe d’Isabelle, dont ses doigts
palpèrent l’étoffe avec un sentiment visible de plaisir et une titillation
voluptueuse. Ce velours fripé, miroité à tous ses plis, lui semblait le plus
neuf, le plus riche et le plus moelleux du monde.
Quoique le tact eût été bien léger, Isabelle se retourna et vit l’action de la
petite, à qui elle sourit maternellement. Se sentant sous un regard, l’enfant
avait repris subitement une niaise physionomie puérile n’indiquant qu’une
stupeur idiote, avec une science instinctive de mimique qui eût fait honneur
à une comédienne consommée dans la pratique de son art, et, d’une voix
dolente, elle dit en son patois:
«C’est comme la chape de la Notre-Dame sur l’autel!»
Puis, baissant ses cils dont la frange noire lui descendait jusque sur les
pommettes, elle appuya ses épaules au dossier de la banquette, joignit ses
mains, croisa ses pouces et feignit de s’endormir comme accablée par la
fatigue.
Mionnette, la grande fille hagarde, vint annoncer que le souper était prêt,
et l’on passa dans la salle voisine.
Les comédiens firent de leur mieux honneur au menu de maître
Chirriguirri, et, sans y trouver les exquisités promises, assouvirent leur
faim, et surtout leur soif par de longues accolades à l’outre presque
désenflée, comme une cornemuse d’où le vent serait sorti.
Ils allaient se lever de table, lorsque des abois de chiens et un bruit de
pieds de chevaux se firent entendre près de l’auberge. Trois coups frappés à
la porte avec une autorité impatiente signalèrent un voyageur qui n’avait
pas l’habitude de faire le pied de grue. La Mionnette se précipita vers l’huis,
tira le loquet, et un cavalier, lui jetant presque le battant à la figure, entra au
milieu d’un tourbillon de chiens qui faillirent renverser la servante et se
répandirent dans la salle sautant, gambadant, cherchant les reliefs sur les
assiettes desservies, et en une minute accomplissant avec leurs langues la
besogne de trois laveuses de vaisselle.
Quelques coups de fouet vigoureusement appliqués sur l’échine, sans
distinction d’innocents ou de coupables, calmèrent comme par
enchantement cette agitation; les chiens se réfugièrent sous les bancs,
haletants, tirant la langue, posèrent leurs têtes sur leurs pattes ou
s’arrondirent en boule, et le cavalier, faisant bruyamment résonner les
mollettes de ses éperons, entra dans la chambre où mangeaient les
comédiens avec l’assurance d’un homme qui est toujours chez lui quelque
part qu’il se trouve. Chirriguirri le suivait, le béret à la main, d’un air
obséquieux et presque craintif, lui qui cependant n’était pas timide.
Le cavalier, debout sur le seuil de la chambre, toucha légèrement le bord
de son feutre et parcourut d’un œil tranquille le cercle des comédiens qui lui
rendaient son salut.
Il pouvait avoir trente ou trente-cinq ans; des cheveux blonds frisés en
spirale encadraient sa tête sanguine et joviale, dont les tons roses tournaient
au rouge sous l’impression de l’air et des exercices violents. Ses yeux, d’un
bleu dur, brillaient à fleur de tête; son nez, un peu retroussé du bout, se
terminait par une facette nettement coupée. Deux petites moustaches
rousses, cirées aux pointes et tournées en croc, se tortillaient sous ce nez
comme des virgules, faisant symétrie à une royale en feuille d’artichaut.
Entre les moustaches et la royale s’épanouissait une bouche dont la lèvre
supérieure un peu mince corrigeait ce que l’inférieure, large, rouge et striée
de lignes perpendiculaires, aurait pu avoir de trop sensuel. Le menton se
rebroussait brusquement, et sa courbe faisait saillir le bouquet de poils de la
barbiche. Le front qu’il découvrit en jetant son feutre sur un escabeau
présentait des tons blancs et satinés, préservé qu’il était habituellement des
ardeurs du soleil par l’ombre du chapeau, et indiquait que ce gentilhomme,
avant qu’il eût quitté la cour pour la campagne, devait avoir le teint fort
délicat. En somme, la physionomie était agréable, et la gaieté du franc
compagnon y tempérait à propos la fierté du noble.
Le costume du nouveau venu montrait par son élégance que du fond de
la province le marquis, c’était son titre, n’avait pas rompu ses relations avec
les bons faiseurs et les bonnes faiseuses.
Un col de point coupé dégageait son col et se rabattait sur une veste de
drap couleur citron agrémentée d’argent, très-courte et laissant déborder
entre elle et le haut-de-chausses un flot de linge fin. Les manches de cette
veste, ou plutôt de cette brassière, découvraient la chemise jusqu’au coude;
le haut-de-chausses bleu, orné d’une sorte de tablier en canons de rubans
paille, descendait un peu au-dessous du genou, où des bottes molles
ergotées d’éperons d’argent le rejoignaient. Un manteau bleu galonné
d’argent, posé sur le coin de l’épaule, et retenu par une ganse, complétait ce
costume, un peu trop coquet peut-être pour la saison et le pays, mais que
nous justifierons d’un mot: le marquis venait de suivre la chasse avec la
belle Yolande, et il s’était adonisé de son mieux, voulant soutenir son
ancienne réputation de braverie, car il avait été admiré au Cours-la-Reine
parmi les raffinés et les gens du bel air.
«La soupe à mes chiens, un picotin d’avoine à mon cheval, un morceau
de pain et de jambon pour moi, un rogaton quelconque à mon piqueur,» dit
le marquis jovialement en prenant place au bout de la table, près de la
Soubrette, qui, voyant un beau seigneur si bien nippé, lui avait décoché une
œillade incendiaire et un sourire vainqueur.
Maître Chirriguirri plaça une assiette d’étain et un gobelet devant le
marquis;—la Soubrette, avec la grâce d’une Hébé, lui versa une large
rasade, qu’il avala d’un trait. Les premières minutes furent consacrées à
réduire au silence les abois d’une faim de chasseur, la plus féroce des faims,
égale en âpreté à celle que les Grégeois nomment boulimie; puis le marquis
promena son regard autour de la table, et remarqua parmi les comédiens,
assis près d’Isabelle, le baron de Sigognac, qu’il connaissait de vue, et qu’il
avait croisé en passant avec la chasse devant le char à bœufs.
Isabelle souriait au Baron, qui lui parlait bas, de ce sourire languissant et
vague, caresse de l’âme, témoignage de sympathie plutôt qu’expression de
gaieté, auquel ne sauraient se méprendre ceux qui ont un peu l’habitude des
femmes, et cette expérience ne manquait pas au marquis. La présence de
Sigognac dans cette troupe de bohèmes ne le surprit plus; et le mépris que
lui inspirait l’équipement délabré du pauvre Baron diminua de beaucoup.
Cette entreprise de suivre sa belle sur le chariot de Thespis à travers le
hasard des aventures comiques ou tragiques lui parut d’une imaginative
galante et d’un esprit délibéré. Il fit un signe d’intelligence à Sigognac pour
lui marquer qu’il l’avait reconnu et comprenait son dessein; mais en
véritable homme de cour il respecta son incognito, et ne parut plus
s’occuper que de la Soubrette, à qui il débitait des galanteries superlatives,
moitié vraies, moitié moqueuses, qu’elle acceptait de même avec des éclats
de rire propres à montrer jusqu’au gosier sa denture magnifique.
Le marquis, désireux de pousser une aventure qui se présentait si bien,
jugea à propos de se dire tout à coup fort épris du théâtre et bon juge en
matière de comédie.—Il se plaignit de manquer en province de ce plaisir
propre à exercer l’intellect, affiner le langage, augmenter la politesse et
perfectionner les mœurs, et, s’adressant au Tyran qui paraissait le chef de la
troupe, il lui demanda s’il n’avait pas d’engagements qui l’empêchassent de
donner quelques représentations des meilleures pièces de son répertoire au
château de Bruyères, où il serait facile de dresser un théâtre dans la
grand’salle ou dans l’orangerie.
Le Tyran, souriant d’un air bonasse dans sa large barbe de crin, répondit
que rien n’était plus facile, et que sa troupe, une des plus excellentes qui
courussent la province, était au service de Sa Seigneurie, depuis le roi
jusqu’à la soubrette, ajouta-t-il avec une feinte bonhomie.
«Voilà qui tombe on ne peut mieux, répondit le marquis, et pour les
conditions il n’y aura point de difficulté; vous fixerez vous-même la
somme; on ne marchande point avec Thalie, laquelle est une muse fort
considérée d’Apollon, et aussi bien vue à la cour qu’à la ville et en
province, où l’on n’est pas si Topinambou qu’on affecte de le croire à
Paris.»
Cela dit, le marquis, après un coup de genou significatif à la Soubrette
qui ne s’en effaroucha point, quitta la table, enfonça son feutre jusqu’au
sourcil, salua la compagnie de la main, et repartit au milieu des jappements
de sa meute; il prenait les devants pour préparer au château la réception des
comédiens.
Il se faisait déjà tard, et l’on devait repartir le matin de très-bonne heure,
car le château de Bruyères était assez éloigné, et si un cheval barbe peut,
par les chemins de traverse, franchir aisément une distance de trois ou
quatre lieues, un chariot pesamment chargé et traîné sur une grande route
sablonneuse, par des bœufs déjà fatigués, y met un espace de temps
beaucoup plus considérable.
Les femmes se retirèrent dans une espèce de soupente, où l’on avait jeté
des bottes de paille; les hommes restèrent dans la salle, s’accommodant du
mieux qu’ils purent sur les bancs et les escabeaux.
IV.

BRIGANDS POUR LES OISEAUX.


Retournons maintenant à la petite fille que nous avons laissée endormie
sur le banc d’un sommeil trop profond pour ne pas être simulé. Son attitude
nous semble à bon droit suspecte, et la féroce convoitise, avec laquelle ses
yeux sauvages se fixaient sur le collier de perles d’Isabelle demande à ce
qu’on surveille ses démarches.
En effet, dès que la porte se fut refermée sur les comédiens, elle souleva
lentement ses longues paupières brunes, promena son regard inquisiteur
dans tous les coins de la chambre, et quand elle se fut bien assurée qu’il n’y
avait plus personne, elle se laissa couler du rebord de la banquette sur ses
pieds, se dressa, rejeta ses cheveux en arrière par un mouvement qui lui
était familier, et se dirigea vers la porte, qu’elle ouvrit sans faire plus de
bruit qu’une ombre. Elle la referma avec beaucoup de précaution, prenant
garde que le loquet ne retombât trop brusquement, puis elle s’éloigna à pas
lents jusqu’à l’angle d’une haie qu’elle tourna.
Sûre alors d’être hors de vue du logis, elle prit sa course, sautant les
fossés d’eau croupie, enjambant les sapins abattus et bondissant sur les
bruyères comme une biche ayant une meute après elle. Les longues mèches
de sa chevelure lui flagellaient les joues comme des serpents noirs, et
parfois, retombant du front, lui interceptaient la vue; alors, sans ralentir la
rapidité de son allure, elle les repoussait avec la paume de la main derrière
son oreille et faisait un geste d’impatience mutine; mais ses pieds agiles
semblaient n’avoir pas besoin d’être guidés par la vue, tant ils connaissaient
le chemin.
L’aspect du lieu, autant qu’on pouvait le démêler à la lueur livide d’une
lune à moitié masquée et portant pour touret de nez un nuage de velours
noir, était particulièrement désolé et lugubre. Quelques sapins, que l’entaille
destinée à leur soutirer la résine rendait semblable à des spectres d’arbres
assassinés, étalaient leurs plaies rougeâtres sur le bord d’un chemin
sablonneux, dont la nuit ne parvenait pas à éteindre la blancheur. Au delà,
de chaque côté de la route, s’étendaient les bruyères d’un violet sombre, où
flottaient des bancs de vapeurs grisâtres auxquelles les rayons de l’astre
nocturne donnaient un air de fantômes en procession, bien fait pour porter
la terreur en des âmes superstitieuses ou peu habituées aux phénomènes de
la nature dans ces solitudes.
L’enfant, accoutumée sans doute à ces fantasmagories du désert, n’y
faisait aucune attention et continuait sa course. Elle arriva enfin à une
espèce de monticule couronné de vingt ou trente sapins qui formaient là
comme une sorte de bois. Avec une agilité singulière, et qui ne trahissait
aucune fatigue, elle franchit l’escarpement assez roide et gagna le sommet
du tertre. Debout sur l’élévation, elle promena quelque temps autour d’elle
ses yeux pour qui l’ombre ne semblait pas avoir de voiles, et, n’apercevant
que l’immensité solitaire, elle mit deux de ses doigts dans sa bouche et
poussa, à trois reprises, un de ces sifflements que le voyageur, traversant les
bois la nuit, n’entend jamais sans une angoisse secrète, bien qu’il les
suppose produits par des chats-huants craintifs ou toute autre bestiole
inoffensive.
Une pause séparait chacun des cris, que sans cela l’on eût pu confondre
avec les ululations des orfraies, des bondrées et des chouettes, tant
l’imitation était parfaite.
Bientôt un monceau de feuilles parut s’agiter, fit le gros dos, se secoua
comme une bête endormie qu’on réveille, et une forme humaine se dressa
lentement devant la petite.
«C’est toi, Chiquita, dit l’homme. Quelle nouvelle? Je ne t’attendais plus
et faisais un somme.»
L’homme qu’avait réveillé l’appel de Chiquita était un gaillard de vingt-
cinq ou trente ans, de taille moyenne, maigre, nerveux et paraissant propre à
toutes les mauvaises besognes; il pouvait être braconnier, contrebandier,
faux-saunier, voleur et coupe-jarret, honnêtes industries qu’il pratiquait les
unes après les autres ou toutes à la fois, selon l’occurrence.
Un rayon de lune tombant sur lui d’entre les nuages, comme le jet de
lumière d’une lanterne sourde, le détachait en clair du fond sombre des
sapins, et eût permis, s’il se fût trouvé là quelque spectateur, d’examiner sa
physionomie et son costume d’une truculence caractéristique. Sa face,
basanée et cuivrée comme celle d’un sauvage caraïbe, faisait briller par le
contraste ses yeux d’oiseau de proie et ses dents d’une extrême blancheur,
dont les canines très-pointues ressemblaient à des crocs de jeune loup. Un
mouchoir ceignait son front comme le bandeau d’une blessure, et
comprimait les touffes d’une chevelure drue, bouclée et rebelle, hérissée en
huppe au sommet de la tête; un gilet de velours bleu, décoloré par un long
usage et agrémenté de boutons faits de piécettes soudées à une tige de
métal, enveloppait son buste; des grègues de toile flottaient sur ses cuisses,
et des alpargatas faisaient s’entre-croiser leurs bandelettes autour de ses
jambes aussi fermes et sèches que des jambes de cerf. Ce costume était
complété par une large ceinture de laine rouge montant des hanches aux
aisselles, et entourant plusieurs fois le corps. Au milieu de l’estomac, une
bosse indiquait le garde-manger et le trésor du malandrin; et, s’il se fût
retourné, on eût pu voir dans son dos, dépassant les deux bords de la
ceinture, une immense navaja de Valence, une de ces navajas allongées en
poisson, dont la lame se fixe en tournant un cercle de cuivre, et porte sur
son acier autant de stries rouges que le brave dont elle est l’arme a commis
de meurtres. Nous ne savons combien la navaja d’Agostin comptait de
cannelures écarlates, mais à la mine du drôle il était permis, sans manquer à
la charité, de les supposer nombreuses.
Tel était le personnage avec qui Chiquita entretenait des relations
mystérieuses.
«Eh bien! Chiquita, dit Agostin en passant avec un geste amical sa rude
main sur la tête de l’enfant, qu’as-tu remarqué à l’auberge de maître
Chirriguirri?
—Il est venu, répondit la petite, un chariot plein de voyageurs; on a porté
cinq grands coffres sous le hangar, qui semblaient assez lourds, car il fallait
deux hommes pour chacun.
—Hum! fit Agostin, quelquefois les voyageurs mettent des cailloux dans
leurs bagages pour se créer de la considération auprès des hôteliers; cela
s’est vu.
—Mais, répondit Chiquita, les trois jeunes dames qui sont avec eux ont
des galons en passementeries d’or sur leurs habits. L’une d’elles, la plus
jolie, a autour du coup un rang de gros grains blancs d’une couleur
argentée, et qui brillent à la lumière; oh! c’est bien beau! bien magnifique!
—Des perles! bon cela, dit entre ses dents le bandit, pourvu qu’elles ne
soient pas fausses! On travaille d’un si merveilleux goût à Murano, et les
galants du jour ont des morales si relâchées!
—Mon bon Agostin, poursuivit Chiquita d’un ton de voix câlin, si tu
coupes le cou à la belle dame, tu me donneras le collier.
—Cela t’irait bien, en effet, et congruerait merveilleusement à ta tignasse
ébouriffée, à ta chemise en toile à torchon et à ta jupe jaune-serin.
—J’ai fait si souvent le guet pour toi, j’ai tant couru afin de t’avertir
quand le brouillard s’élevait de terre, et que la rosée mouillait mes pauvres
pieds nus. T’ai-je jamais fait attendre ta nourriture dans tes cachettes, même
lorsque la fièvre me faisait claquer du bec comme une cigogne au bord d’un
marécage et que je pouvais à peine me traîner à travers les halliers et les
broussailles?
—Oui, répondit le brigand, tu es brave et fidèle; mais nous ne le tenons
pas encore, ce collier. Combien as-tu compté d’hommes?
—Oh! beaucoup. Un gros et fort, avec une large barbe au milieu du
visage; un vieux, deux maigres, un qui a l’air d’un renard et un autre qui
semble un gentilhomme, bien qu’il ait des habits mal en point.
—Six hommes, fit Agostin devenu rêveur en supputant sur ses doigts.
Hélas! ce nombre ne m’eût pas effrayé autrefois; mais je reste seul de ma
bande. Ont-ils des armes, Chiquita?
—Le gentilhomme a son épée et le grand maigre sa rapière.
—Pas de pistolets, ni d’arquebuse?
—Je n’en ai pas vu, reprit Chiquita, à moins qu’ils ne les aient laissés
dans le chariot, mais Chirriguirri ou la Mionnette m’aurait fait signe.
—Allons, risquons le coup, et dressons l’embuscade, dit Agostin en
prenant sa résolution. Cinq coffres, des broderies d’or, un collier de perles.
J’ai travaillé pour moins.»
Le brigand et la petite fille entrèrent dans le bois de sapins;
Oui, répondit le brigand, tu es brave et fidèle... (Page 72.)

et, parvenus à l’endroit le plus secret, ils se mirent activement à déranger


des pierres et des brassées de broussailles, jusqu’à ce qu’ils eussent mis à
nu cinq ou six planches saupoudrées de terre. Agostin souleva les planches,
les jeta de côté, et descendit jusqu’à mi-corps dans la noire ouverture
qu’elles laissaient béante. Était-ce l’entrée d’un souterrain ou d’une
caverne, retraite ordinaire du brigand? la cachette où il serrait les objets
volés? l’ossuaire où il entassait les cadavres de ses victimes?
Cette dernière supposition eût paru la plus vraisemblable au spectateur,
si la scène eût eu d’autres témoins que les choucas perchés dans la
sapinière.
Agostin se courba, parut fouiller au fond de la fosse, se redressa tenant
entre les bras une forme humaine d’une roideur cadavérique, qu’il jeta sans
cérémonie sur le bord du trou. Chiquita ne parut éprouver aucune frayeur à
cette exhumation étrange, et tira le corps par les pieds à quelque distance de
la fosse, avec plus de force que sa frêle apparence ne permettait d’en
supposer. Agostin, continuant son lugubre travail, sortit encore de cet
Haceldama cinq cadavres que la petite fille rangea auprès du premier,
souriant comme une jeune goule prête à faire ripaille dans un cimetière.
Cette fosse ouverte, ce bandit arrachant à leur repos les restes de ses
victimes, cette petite fille aidant à cette funèbre besogne, tout cela sous
l’ombre noire des sapins, composait un tableau fait pour inspirer l’effroi aux
plus braves.
Le bandit prit un des cadavres, le porta sur la crête de l’escarpement, le
dressa, et le fit tenir debout en fichant en terre le pieu auquel le corps était
lié. Ainsi maintenu, le cadavre singeait assez à travers l’ombre l’apparence
d’un homme vivant.
«Hélas! à quoi en suis-je réduit par le malheur des temps, dit Agostin
avec un han de saint Joseph. Au lieu d’une bande de vigoureux drôles,
maniant le couteau et l’arquebuse comme des soldats d’élite, je n’ai plus
que des mannequins couverts de guenilles, des épouvantails à voyageurs,
simples comparses de mes exploits solitaires! Celui-ci, c’était Matasierpes,
le vaillant Espagnol, mon ami de cœur, un garçon charmant, qui avec sa
navaja traçait des croix sur la figure des gavaches aussi proprement qu’avec
un pinceau trempé dans du rouge; bon gentilhomme d’ailleurs, hautain
comme s’il était issu de la propre cuisse de Jupiter, présentant le coude aux
dames pour descendre de coche et détroussant les bourgeois d’une façon
grandiose et royale! Voilà sa cape, sa golille et son sombrero à plume
incarnadine que j’ai pieusement dérobés au bourreau comme des reliques, et
dont j’ai revêtu l’homme de paille qui remplace ce jeune héros digne d’un
meilleur sort. Pauvre Matasierpes! cela le contrariait d’être pendu, non qu’il
se souciât du trépas, mais comme noble, il prétendait avoir le droit d’être
décapité. Par malheur, il ne portait pas sa généalogie dans sa poche, et il lui
fallut expirer perpendiculairement.»
Retournant près de la fosse, Agostin prit un autre mannequin coiffé d’un
béret bleu:
«Celui-là, c’est Isquibaïval, un fameux, un vaillant, plein de cœur à
l’ouvrage, mais il avait quelquefois trop de zèle et se laissait aller à tout
massacrer: il ne faut pas détruire la pratique, que diable! Du reste, peu âpre
au butin, toujours content de sa part. Il dédaignait l’or et n’aimait que le
sang; brave nature! Et quelle belle attitude il eut sous la barre du
tortionnaire, lorsqu’il fut roué en pleine place d’Orthez! Régulus et saint
Barthélemy ne firent pas meilleure contenance dans les tourments. C’était
ton père, Chiquita, honore sa mémoire et dis une prière pour le repos de son
âme.»
La petite fit un signe de croix, et ses lèvres s’agitèrent comme
murmurant les paroles sacrées.
Le troisième épouvantail avait le pot en tête et rendait entre les bras
d’Agostin un bruit de ferraille. Un plastron de fer luisait vaguement sur son
buffle en lambeaux, et des targettes brimballaient sur ses cuisses. Le bandit
fourbit l’armure de sa manche pour lui rendre son éclat.
«Un éclair de métal qui flamboie dans l’ombre inspire parfois une terreur
salutaire. On croit avoir affaire à des gens d’armes en vacance. Un vieux
routier, celui-là! travaillant sur le grand chemin comme sur le champ de
bataille, avec sang-froid, méthode et discipline. Une pistolade en pleine
figure me le ravit. Quelle irréparable perte! Mais je vengerai bien sa mort!»
Le quatrième fantôme, drapé d’un manteau en dents de scie, fut comme
les autres honoré d’une oraison funèbre. Il avait rendu l’âme à la question,
ne voulant pas convenir, par modestie, de ses hauts faits, et refusant avec
une constance héroïque de livrer les noms de ses camarades à la justice trop
curieuse.
Le cinquième, représentant Florizel de Bordeaux, n’obtint pas de
myriologie d’Agostin, mais un simple regret mêlé d’espérance. Florizel, la
main la plus légère de la province pour tirer sur les ponts la soie ou la laine,
ne se balançait pas comme les autres, moins heureux, aux chaînes du gibet,
lavé de la pluie et piqué des corbeaux. Il voyageait aux frais de l’État sur les
galères du roi dans les mers océanes et méditerranées. Ce n’était qu’un filou
parmi des brigands, un renard dans une bande de loups; mais il avait des
dispositions, et, perfectionné à l’école de la chiourme, il pouvait devenir un
sujet d’importance; on n’est pas parfait du premier coup. Agostin attendait
impatiemment que cet aimable personnage s’échappât du bagne et lui
revînt.
Gros et court, vêtu d’une souquenille cerclée par une large ceinture de
cuir, coiffé d’un chapeau à larges bords, le sixième mannequin fut planté un
peu en avant des autres comme un chef d’escouade.
«Tu mérites cette place d’honneur, fit Agostin en s’adressant à
l’épouvantail, patriarche du grand chemin, Nestor de la tire, Ulysse de la
pince et du croc, ô grand Lavidalotte, mon guide et mon maître, toi qui me
reçus parmi les chevaliers de la belle Étoile, et qui, de mauvais écolier que
j’étais, me fis bandit émérite. Tu m’appris à parler le narquois, à me
déguiser de vingt manières diverses, comme feu Protéus quand il était
pressé des gens; à ficher le couteau dans le nœud d’une planche à trente pas
de distance; à moucher une chandelle d’un coup de pistolet; à passer
comme la bise à travers les serrures; à me promener invisible par les logis,
de même que si j’eusse eu une main de gloire en ma possession; à trouver
les cachettes les plus absconses, et cela sans baguette de coudrier! Que de
bonnes doctrines j’ai reçues de toi, grand homme! et comme tu me fis voir,
par raisons éloquemment déduites, que le travail était fait pour les sots!
Pourquoi faut-il que la fortune marâtre t’ait réduit à mourir de faim dans
cette caverne, dont les issues étaient gardées et où les sergents n’osaient
pénétrer; car nul ne se soucie, pour brave qu’il soit, d’affronter le lion en
son antre même; mourant, il peut encore abattre cinq ou six compagnons, de
sa griffe ou de sa dent! Allons, toi à qui, indigne, j’ai succédé, commande
sagement cette petite troupe chimérique et fallote, ces mannequins spectres
des braves que nous avons perdus, et qui, bien que défunts, rempliront
encore, comme le Cid mort, leur office de vaillants. Vos ombres, glorieux
bandits, suffiront à détrousser ces bélîtres.»
Sa besogne terminée, le bandit alla se planter sur la route pour juger de
l’effet de la mascarade. Les brigands de paille avaient l’air suffisamment
horrifique et féroce, et l’œil de la peur pouvait s’y tromper dans l’ombre de
la nuit ou le crépuscule du matin, à cette heure louche où les vieux saules,
avec leurs tronçons de branches, prennent au rebord des fossés la
physionomie d’hommes vous montrant le poing ou brandissant des
coutelas.
«Agostin, dit Chiquita, tu as oublié d’armer tes mannequins!
—C’est vrai, répondit le brigand. A quoi donc pensais-je? Les plus beaux
génies ont leurs distractions; mais cela peut se réparer.»
Et il mit au bout de ces bras inertes de vieux fûts d’arquebuses, des épées
rouillées, ou même de simples bâtons couchés en joue; avec cet arsenal, la
troupe avait au bord des talus un aspect suffisamment formidable.
«Comme la traite est longue du village à la dînée, ils partiront sans doute
à trois heures du matin; et quand ils passeront devant l’embuscade, l’aube
commencera à poindre, instant favorable, car il ne faut à nos hommes ni
trop de lumière, ni trop d’ombre. Le jour les trahirait, la nuit les cacherait.
En attendant, faisons un somme. Le grincement des roues non graissées du
chariot, ce bruit qui met en fuite les loups épouvantés, s’entend de loin et
nous réveillera. Nous autres qui ne dormons jamais que d’un œil comme les
chats, nous serons bien vite sur pied.»
Cela dit, Agostin s’étendit sur quelques jonchées de bruyères. Chiquita
s’allongea près de lui pour profiter de la capa de muestra valencienne qu’il
s’était jetée dessus comme couverture, et procurer un peu de chaleur à ses
pauvres petits membres tremblants de fièvre. Bientôt la tiédeur l’envahit,
ses dents cessèrent de claquer, et elle partit pour le pays des songes. Nous
devons avouer que dans ses rêves enfantins ne voletaient pas de beaux
chérubins roses cravatés d’ailes blanches, ne bêlaient pas des moutons
savonnés et ornés de faveurs, ne s’élevaient pas des palais de caramel à
colonnes d’angélique. Non, Chiquita voyait la tête coupée d’Isabelle qui
tenait entre ses dents le collier de perles, et, sautant par bonds désordonnés
et brusques, cherchait à le dérober aux mains tendues de l’enfant. Ce rêve
agitait Chiquita, et Agostin, à demi réveillé aux soubresauts, murmurait
parmi un ronflement:
«Si tu ne te tiens pas tranquille, je t’envoie, d’un coup de pied, au bas du
talus, gigoter avec les grenouilles.»
Chiquita, qui savait Agostin homme de parole, se le tint pour dit et ne
bougea plus. Le souffle de leurs respirations égales fut bientôt le seul bruit
qui trahît la présence d’êtres vivants dans cette morne solitude.
Le brigand et sa petite complice buvaient à pleines gorgées à la coupe
noire du sommeil, au milieu de la lande, quand à l’auberge du Soleil bleu le
bouvier, frappant le sol de son aiguillon, vint avertir les comédiens qu’il
était temps de se mettre en route.
On s’arrangea comme on put dans le chariot, sur les malles qui formaient
des angles désordonnés, et le Tyran se compara au sieur Polyphème, couché
sur une crête de montagne, ce qui ne l’empêcha pas de ronfler bientôt
comme un chantre; les femmes s’étaient blotties au fond, sous la banne, où
les toiles ployées des décors représentaient une espèce de matelas,
comparativement moelleux. Malgré le grincement affreux des roues, qui
sanglotaient, miaulaient, rauquaient, râlaient, tout le monde s’endormit d’un
sommeil pénible, entremêlé de rêves incohérents et bizarres, où les bruits du
chariot se transformaient en ululations de bêtes féroces ou en cris d’enfants
égorgés.
Sigognac, l’esprit agité par la nouveauté de l’aventure et le tumulte de
cette vie bohémienne, si différente du silence claustral de son château,
marchait à côté du char. Il songeait aux grâces adorables d’Isabelle, dont la
beauté et la modestie semblaient plutôt d’une demoiselle née que d’une
comédienne errante, et il s’inquiétait de savoir comment il s’y prendrait
pour s’en faire aimer, ne se doutant pas que la chose était déjà faite, et que
la douce créature, touchée au plus tendre de l’âme, n’attendait pour lui
donner son cœur autre chose, sinon qu’il le lui demandât. Le timide Baron
arrangeait dans sa tête une foule d’incidents terribles ou romanesques, de
dévouements comme on en voit dans les livres de chevalerie pour amener
ce formidable aveu dont la pensée seule lui serrait la gorge; et cependant cet
aveu qui lui coûtait tant, la flamme de ses yeux, le tremblement de sa voix,
ses soupirs mal étouffés, l’empressement un peu gauche dont il entourait
Isabelle, les réponses distraites qu’il faisait aux comédiens, l’avaient déjà
prononcé de la façon la plus claire. La jeune femme, quoiqu’il ne lui eût pas
dit un mot d’amour, ne s’y était pas trompée.
Le matin commençait à grisonner. Une étroite bande de lumière pâle
s’allongeait au bord de la plaine, dessinant en noir d’une manière distincte,
malgré l’éloignement, les bruyères frissonnantes et même la pointe des
herbes. Quelques flaques d’eau, égratignées par le rayon, brillaient çà et là
comme les morceaux d’une glace brisée. De légers bruits s’éveillaient, et
des fumées montaient dans l’air tranquille, révélant à de grandes distances
la reprise de l’activité humaine au milieu de ce désert. Sur la zone
lumineuse, dont la teinte tournait au rose, une forme bizarre se profilait, qui
de loin ressemblait à un compas tenu par un géomètre invisible et mesurant
la lande. C’était un berger monté sur ses échasses, marchant à pas de
faucheux à travers les marécages et les sables.
Ce spectacle n’était pas nouveau pour Sigognac, et il y faisait peu
d’attention, mais, si fort qu’il fût enfoncé dans sa rêverie, il ne put
s’empêcher d’être préoccupé par un petit point brillant qui scintillait sous
l’ombre encore fort noire du bouquet de sapins où nous avons laissé
Agostin et Chiquita. Ce ne pouvait être une luciole; la saison où l’amour
illumine les vers luisants de son phosphore était passée depuis plusieurs
mois. Était-ce l’œil d’un oiseau de nuit borgne? car il n’y avait qu’un point
lumineux. Cette supposition ne satisfaisait pas Sigognac; on eût dit le
pétillement d’une mèche d’arquebuse allumée.
Cependant le chariot marchait toujours, et, en se rapprochant de la
sapinière, Sigognac crut démêler sur le bord de l’escarpement une rangée
d’êtres bizarres plantés comme en embuscade et dont les premiers rayons
du soleil levant ébauchaient vaguement les formes; mais, à leur parfaite
immobilité, il les prit pour de vieilles souches et se prit à rire en lui-même
de son inquiétude, et il n’éveilla pas les comédiens comme il en avait
d’abord eu l’idée.
Le chariot fit encore quelques tours de roue. Le point brillant

La bourse ou la vie! (Page 79.)


sur lequel Sigognac tenait toujours les yeux fixés se déplaça. Un long jet de
feu sillonna un flot de fumée blanchâtre; une forte détonation se fit
entendre, et une balle s’aplatit sous le joug des bœufs, qui se jetèrent
brusquement de côté, entraînant le chariot qu’un tas de sable retint
heureusement au bord du fossé.
A la détonation et à la secousse, toute la troupe s’éveilla en sursaut; les
jeunes femmes se mirent à pousser des cris aigus. La vieille seule, faite aux
aventures, garda le silence et prudemment glissa deux ou trois doublons
serrés dans sa ceinture entre son bas et la semelle de son soulier.
Debout, à la tête du char d’où les comédiens s’efforçaient de sortir,
Agostin, sa cape de Valence roulée sur son bras, sa navaja au poing, criait
d’une voix tonnante:
«La bourse ou la vie! toute résistance est inutile; au moindre signe de
rébellion ma troupe va vous arquebuser!»
Pendant que le bandit posait son ultimatum de grand chemin, le Baron,
dont le généreux cœur ne pouvait admettre l’insolence d’un pareil maroufle,
avait tranquillement dégainé et fondait sur lui l’épée haute. Agostin parait
les bottes du Baron avec son manteau et épiait l’occasion de lui lancer sa
navaja; appuyant le manche du couteau à la saignée, et, balançant le bras
d’un mouvement sec, il envoya la lame au ventre de Sigognac, à qui bien en
prit de n’être pas obèse. Une légère retraite de côté lui fit éviter la pointe
meurtrière; la lame alla tomber à quelques pas plus loin. Agostin pâlit, car il
était désarmé, et il savait que sa troupe d’épouvantail ne pouvait lui être
d’aucun secours. Cependant, comptant sur un effet de terreur, il cria: «Feu!
vous autres!» Les comédiens, craignant l’arquebusade, firent un moment de
retraite et se réfugièrent derrière le chariot, où les femmes piaillaient
comme des geais plumés vifs. Sigognac lui-même, malgré son courage, ne
put s’empêcher de baisser un peu la tête.
Chiquita, qui avait suivi toute la scène, cachée par un buisson dont elle
écartait les branches, voyant la périlleuse situation de son ami, rampa
comme une couleuvre sur la poudre du chemin, ramassa le couteau sans
qu’on prît garde à elle, et, se redressant d’un bond, remit la navaja au
bandit. Rien n’était plus fier et plus sauvage que l’expression qui rayonnait
sur la tête pâle de l’enfant; des éclairs jaillissaient de ses yeux sombres, ses
narines palpitaient comme des ailes d’épervier, ses lèvres entr’ouvertes
laissaient voir deux rangées de dents féroces comme celles qui luisent dans
le rictus d’un animal acculé. Toute sa petite personne respirait
indomptablement la haine et la révolte.
Agostin balança une seconde fois le couteau, et peut-être le baron de
Sigognac eût-il été arrêté au début de ses aventures, si une main de fer
n’avait saisi fort opportunément le poignet du bandit. Cette main, serrant
comme un étau dont on tourne la vis, écrasait les muscles, froissait les os,
faisait gonfler les veines et venir le sang dans les ongles. Agostin essaya de
se débarrasser par des secousses désespérées; il n’osait se retourner, car le
Baron l’eût lardé dans le dos, et il parait encore les coups de son bras
gauche, et pourtant il sentait que sa main prise s’arracherait de son bras
avec ses nerfs s’il persistait à la délivrer. La douleur devint si violente, que
ses doigts engourdis s’entr’ouvrirent et lâchèrent l’arme.
C’était le Tyran qui, passant derrière Agostin, avait rendu ce bon office à
Sigognac. Tout à coup il poussa un cri:
«Mordions! est-ce qu’une vipère me pique; j’ai senti deux crocs pointus
m’entrer dans la jambe.»
En effet, Chiquita lui mordait le mollet comme un chien pour le faire
retourner; le Tyran, sans lâcher prise, secoua la petite fille et l’envoya rouler
à dix pas sur le chemin. Le Matamore, reployant ses longs membres
articulés comme ceux d’une sauterelle, se baissa, ramassa le couteau, le
ferma et le mit dans sa poche.
Pendant cette scène, le soleil émergeait petit à petit de l’horizon; une
portion de son disque d’or rose se montrait au-dessus de la ligne des landes,
et les mannequins, sous ce rayon véridique, perdaient de plus en plus leur
apparence humaine.
«Ah çà! il paraît, dit le Pédant, que les arquebuses de ces messieurs ont
fait long feu à cause de l’humidité de la nuit. En tout cas, ils ne sont guère
braves, car ils laissent leur chef dans l’embarras et ne bougent non plus que
des Termes mythologiques!
—Ils ont de bonnes raisons pour cela, répliqua le Matamore en
escaladant le talus, ce sont des hommes de paille habillés de guenilles,
armés de ferrailles, excellents pour éloigner les oiseaux des cerises et des
raisins.»
En six coups de pied il fit rouler au milieu de la route les six grotesques
fantoches qui s’épatèrent sur la poudre avec ces gestes irrésistiblement
comiques de marionnettes dont on a abandonné les fils. Ainsi disloqués et
aplatis, les mannequins parodiaient d’une façon aussi bouffonne que sinistre
les cadavres étalés sur les champs de bataille.
«Vous pouvez descendre, mesdames, dit le Baron aux comédiennes, il
n’y a plus rien à craindre; ce n’était qu’un péril en peinture.»
Désolé du mauvais succès d’une ruse qui habituellement lui réussissait,
tant est grande la couardise des gens, et tant la peur grossit les objets,
Agostin penchait la tête d’un air piteux. Près de lui se tenait Chiquita
effarée, hagarde et furieuse comme un oiseau de nuit surpris par le jour. Le
bandit craignait que les comédiens, qui étaient en nombre, ne lui fissent un
mauvais parti ou ne le livrassent à la justice; mais la farce des mannequins
les avait mis en belle humeur, et ils s’esclaffaient de rire comme un cent de
mouches. Le rire n’est point cruel de sa nature; il distingue l’homme de la
bête, et il est, suivant Homérus, l’apanage des dieux immortels et
bienheureux qui rient olympiennement tout leur saoul pendant les loisirs de
l’éternité.
Aussi le Tyran, qui était bonasse de sa nature, desserra-t-il les doigts, et
tout en maintenant le bandit, lui dit-il de sa grosse voix tragique, dont il
gardait parfois les intonations dans le langage familier:
«Drôle, tu as fait peur à ces dames, et pour cela tu mériterais d’être
pendu haut et court; mais si, comme je le crois, elles te font grâce, car ce
sont de bonnes âmes, je ne te conduirai pas au prévôt. Le métier d’argousin
ne me ragoûte pas; je ne tiens pas à pourvoir la potence de gibier.
D’ailleurs, ton stratagème est assez picaresque et comique. C’est un bon
tour pour extorquer des pistoles aux bourgeois poltrons. Comme acteur
expert aux ruses et subterfuges, je l’apprécie, et ton imaginative m’induit à
l’indulgence. Tu n’es point platement et bestialement voleur, et ce serait
dommage de t’interrompre en une si belle carrière.
—Hélas! répondit Agostin, je n’ai pas le choix d’une autre, et suis plus à
plaindre que vous ne pensez; il ne reste plus que moi de ma troupe aussi
bien composée naguère que la vôtre; le bourreau m’a pris mes premiers,
seconds et troisièmes rôles; il faut que je joue tout seul ma pièce sur le
théâtre du grand chemin, affectant des voix diverses, habillant des
mannequins pour faire croire que je suis soutenu par une bande nombreuse.
Ah! c’est un sort plein de mélancolie! Avec cela il ne passe personne sur ma
route, elle est si mal famée, si coupée de fondrières, si dure aux piétons,
chevaux et carrosses; elle ne vient de nulle part et ne mène à rien; mais je
n’ai pas le moyen d’en acheter une meilleure. Chaque chemin un peu
fréquenté a sa compagnie. Les fainéants qui travaillent s’imaginent que tout
est rose dans la vie du voleur; il y a beaucoup de chardons. Je voudrais bien
être honnête; mais comment me présenter aux portes des villes avec une
mine si truculente et une toilette si sauvagement déguenillée! Les dogues
me sauteraient aux jambes et les sergents au collet, si j’en avais un. Voilà
mon coup manqué, un coup bien machiné, monté bien soigneusement, qui
devait me faire vivre deux mois et me donner de quoi acheter une capeline à
cette pauvre Chiquita. Je n’ai pas de bonheur, et suis né sous une étoile
enragée. Hier, j’ai dîné en serrant ma ceinture d’un cran. Votre courage
intempestif m’ôte le pain de la bouche, et puisque je n’ai pu vous voler, au
moins faites-moi l’aumône.
—C’est juste, répondit le Tyran, nous t’empêchons d’exercer ton
industrie, et nous te devons un dédommagement. Tiens, voilà deux pistoles
pour boire à notre santé.»
Isabelle prit dans le chariot un grand morceau d’étoffe dont elle fit
présent à Chiquita. «Oh! c’est le collier de grains blancs que je voudrais,»
dit l’enfant avec un regard d’ardente convoitise. La comédienne le défit et
le passa au cou de la petite voleuse éperdue et ravie. Chiquita roulait en
silence les grains blancs sous ses doigts brunis, penchant la tête et tâchant
d’apercevoir le collier sur sa petite poitrine maigre, puis elle releva
brusquement sa tête, secoua ses cheveux en arrière, fixa ses yeux étincelants
sur Isabelle, et dit avec un accent profond et singulier:
«Vous êtes bonne; je ne vous tuerai jamais!»
D’un bond, elle franchit le fossé, courut jusqu’à un petit tertre où elle
s’assit, contemplant son trésor.
Pour Agostin, après avoir salué, il ramassa ses mannequins
démantibulés, les reporta dans la sapinière, et les inhuma de nouveau pour
une meilleure occasion. Le chariot que le bouvier avait rejoint, car à la
détonation de l’arquebuse il s’était bravement enfui, laissant ses voyageurs
se débrouiller comme ils l’entendraient, se remit pesamment en marche.
La Duègne retira les doublons de ses souliers et les réintégra
mystérieusement au fond de sa pochette.
«Vous vous êtes conduit comme un héros de roman, dit Isabelle à
Sigognac, et sous votre sauvegarde on voyage en sûreté; comme vous avez
bravement poussé ce bandit que vous deviez croire soutenu par une bande
bien armée!
—Ce péril était bien peu de chose, à peine une algarade, répondit
modestement le Baron; pour vous protéger je fendrais des géants du crâne à
la ceinture, je mettrais en déroute tout un ost de Sarrasins, je combattrais
parmi des tourbillons de flamme et de fumée des orques, des endriagues et
des dragons, je traverserais des forêts magiques, pleines d’enchantements,
je descendrais aux enfers comme Énéas et sans rameau d’or. Aux rayons de
vos beaux yeux tout me deviendrait facile, car votre présence ou votre
pensée seulement m’infuse quelque chose de surhumain.»
Cette rhétorique était peut-être un peu exagérée, et, comme dirait
Longin, asiatiquement hyperbolique, mais elle était sincère. Isabelle ne
douta pas un instant que Sigognac n’accomplît en son honneur toutes ces
fabuleuses prouesses, dignes d’Amadis des Gaules, d’Esplandion et de
Florimart d’Hyrcanie. Elle avait raison; le sentiment le plus vrai dictait ces
emphases au Baron, d’heure en heure plus épris. L’amour ne trouve jamais
pour s’exprimer de termes assez forts. Sérafine, qui avait entendu les
phrases de Sigognac, ne put s’empêcher de sourire, car toute jeune femme
trouve volontiers ridicules les protestations d’amour qu’on adresse à une
autre, et qui, en changeant de route, lui sembleraient les plus naturelles du
monde. Elle eut un instant l’idée d’essayer le pouvoir de ses charmes et de
disputer Sigognac à son amie; mais cette velléité dura peu. Sans être
précisément intéressée, Sérafine se disait que la beauté était un diamant qui
devait être enchâssé dans l’or. Elle possédait le diamant, mais l’or
manquait, et le Baron était si désastreusement râpé, qu’il ne pouvait fournir
ni la monture, ni même l’écrin. La grande coquette rengaîna donc l’œillade
préparée, se disant que de telles amourettes étaient bonnes seulement pour
des ingénues, et non pour des premiers rôles, et elle reprit sa mine détachée
et sereine.
Le silence s’établit dans le chariot, et le sommeil commençait à jeter du
sable sous les paupières des voyageurs, lorsque le bouvier dit:
«Voilà le château de Bruyères!»
V.

CHEZ MONSIEUR LE MARQUIS.


Aux rayons d’une belle matinée, le château de Bruyères se développait
de la façon la plus avantageuse du monde. Les domaines du marquis, situés
sur l’ourlet de la lande, se trouvaient en pleine terre végétale, et le sable
infertile poussait ses dernières vagues blanches contre les murailles du parc.
Un air de prospérité, formant un parfait contraste avec la misère des
alentours, réjouissait agréablement la vue dès qu’on y mettait le pied; c’était
comme une île Macarée au milieu d’un océan de désolation.
Un saut-de-loup, revêtu d’un beau parement de pierre, déterminait
l’enceinte du château sans le masquer. Dans un fossé miroitait en carreaux
verts une eau brillante et vive dont aucune herbe aquatique n’altérait la
pureté, et qui témoignait d’un soigneux entretien. Pour la traverser se
présentait un pont de briques et de pierre assez large pour que deux
carrosses y pussent rouler de front, et garni de garde-fous à balustres. Ce
pont aboutissait à une magnifique grille en fer battu, vrai monument en
serrurerie que l’on aurait cru façonné du propre marteau de Vulcain. Les
portes s’accrochaient à deux piliers de métal quadrangulaires, travaillés et
fouillés à jour, simulant un ordre d’architecture et portant une architrave au-
dessus de laquelle s’épanouissait un buisson de rinceaux contournés, d’où
partaient des feuillages et des fleurs se recourbant avec des symétries
antithétiques. Au centre de ce fouillis ornemental rayonnait le blason du
marquis, qui portait d’or à la fasce bretessée et contre-bretessée de gueules,
avec deux hommes sauvages pour support. De chaque côté de la grille se
hérissaient sur des volutes en accolades pareilles a ces traits de plume que
les calligraphes tracent sur le vélin, des artichauts de fer aux feuilles aiguës,
destinés à empêcher les maraudeurs agiles de sauter du pont sur le terre-
plein intérieur par les angles de la grille. Quelques fleurs et quelques
ornements dorés, se mêlant d’une manière discrète à la sévérité du métal,
ôtaient à cette serrurerie son aspect défensif pour ne lui laisser qu’une
apparence de richesse élégante. C’était une entrée presque royale, et quand
un valet à la livrée du marquis en eut ouvert les portes, les bœufs qui
traînaient le chariot hésitèrent à la franchir, comme éblouis par ces
magnificences et honteux de leur rusticité. Il fallut une piqûre d’aiguillon
pour les décider. Ces braves bêtes trop modestes ne savaient pas que
labourage est nourricier de noblesse.
En effet, par une grille semblable, il n’eût dû entrer que des carrosses à
trains dorés, à caisses drapées de velours, à portières avec glaces de Venise
ou mantelets en cuir de Cordoue; mais la comédie a ses priviléges, et le char
de Thespis pénètre partout.
Une allée sablée de la largeur du pont conduisait au château, traversant
un jardin ou parterre planté selon la dernière mode. Des bordures de buis
rigoureusement taillées y dessinaient des cadres ou se déployaient, comme
sur une pièce de damas, des ramages de verdure d’une symétrie parfaite.
Les ciseaux du jardinier ne permettaient pas à une feuille de dépasser
l’autre, et la nature, malgré ses rébellions, était obligée de s’y faire l’humble
servante de l’art. Au milieu de chaque compartiment, se dressait dans une
attitude mythologique et galante, une statue de déesse ou de nymphe en
style flamand italianisé. Des sables de diverses couleurs servaient de fond à
ces dessins végétaux qu’on n’eût pas plus régulièrement tracés sur le papier.
A la moitié du jardin une allée de même largeur se croisait avec la
première, non pas à angles droits, mais en aboutissant à une sorte de rond-
point dont le centre était occupé par une pièce d’eau, ornée d’une rocaille
servant de piédestal à un Triton enfant qui soufflait une fusée de cristal
liquide avec sa conque.
Sur les côtés du parterre régnaient des charmilles palissadées, tondues à
vif et que l’automne commençait à dorer. Une industrie savante avait fait de
ces arbres, qu’il eût été difficile de reconnaître pour tels, un portique à
arcades qui laissaient par leurs baies apercevoir des perspectives et des
fuites ménagées à souhait pour le plaisir des yeux sur les campagnes
environnantes.
Le long de l’allée principale, des ifs taillés en pyramides, en boules, en
pots à feu, alternés de distance en distance, découpaient leur feuillage
sombre toujours vert et se tenaient rangés comme une haie de serviteurs sur
le passage des hôtes.
Toutes ces magnificences émerveillaient au plus haut degré les pauvres
comédiens, qui, rarement, avaient été admis en de pareils séjours. Sérafine,
guignant ces splendeurs du coin de l’œil, se promettait bien de couper
l’herbe sous le pied à la Soubrette et de ne pas permettre à l’amour du
marquis de déroger; cet Alcandre lui semblait revenir de droit à la grande
coquette. Depuis quand voit-on la suivante avoir la préséance sur la dame?
La Soubrette, sûre de ses charmes, niés des femmes mais reconnus des
hommes sans conteste, se regardait déjà presque comme chez elle, non sans
raison; elle se disait que le marquis l’avait particulièrement distinguée, et
que d’une œillade assassine adressée en plein cœur lui venait subitement ce
goût de comédie. Isabelle, qu’aucune visée ambitieuse ne préoccupait,
tournait la tête vers Sigognac assis derrière elle dans le chariot, où une sorte
de pudeur l’avait fait se réfugier, et de son vague et charmant sourire elle
cherchait à dissiper l’involontaire mélancolie du Baron. Elle sentait que le
contraste du riche château de Bruyères et du misérable castel de Sigognac
devait produire une impression douloureuse sur l’âme du pauvre
gentilhomme, réduit par la mauvaise fortune à suivre les aventures d’une
charretée de comédiens errants, et avec son doux instinct de femme, elle
jouait tendrement autour de ce brave cœur blessé, digne en tout point d’une
meilleure chance.
Le Tyran remuait dans sa tête, comme des billes dans un sac, le chiffre
des pistoles qu’il demanderait pour gage de sa troupe, ajoutant un zéro à
chaque tour de roue. Blazius le Pédant, passant sa langue de Silène sur ses
lèvres altérées d’une soif inextinguible, songeait libidineusement aux
muids, quartauts et poinçons de vin des meilleurs crus que devaient contenir
les celliers du château. Le Léandre, raccommodant d’un petit peigne
d’écaille l’économie un peu compromise de sa perruque, se demandait, avec
un battement de cœur, si ce féerique manoir renfermait une châtelaine.
Question d’importance! Mais la mine hautaine et bravache, quoique joviale
du marquis, modérait un peu les audaces qu’il se permettait déjà en
imagination.
Rebâti à neuf sous le règne précédent, le château de Bruyères se
déployait en perspective au bout du jardin dont il occupait presque toute la
largeur. Le style de son architecture rappelait celui des hôtels de la place
Royale de Paris. Un grand corps de logis et deux ailes revenant en équerre,
de façon à former une cour d’honneur, composaient une ordonnance fort
bien entendue et majestueuse sans ennui. Les murs de briques rouges reliés
aux angles de chaînes en pierre faisaient ressortir les cadres des fenêtres
également taillés dans une belle pierre blanche. Des linteaux de même
matière accusaient la division des étages au nombre de trois. Au claveau des
fenêtres, une tête de femme sculptée, à joues rebondies, à coiffure attifée
coquettement, souriait d’un air de bonne humeur et de bienvenue. Des
balustres pansus soutenaient l’appui des balcons. Les vitres nettes,
brillantes, laissaient, à travers la scintillation du soleil levant qu’elles
réfléchissaient, transparaître vaguement d’amples rideaux de riches étoffes.
Pour rompre la ligne du corps de logis central, l’architecte, habile élève
d’Androuet du Cerceau, avait projeté en saillie une sorte de pavillon plus
orné que le reste de l’édifice et contenant la porte d’entrée où l’on accédait
par un perron. Quatre colonnes couplées d’ordre rustique, aux assises
alternativement rondes et carrées, ainsi qu’on en voit dans les peintures du
sieur Pierre-Paul Rubens, si fréquemment employé par la reine Marie de
Médicis, supportaient une corniche blasonnée, comme la grille, des armes
du marquis et formant la plate-forme d’un grand balcon à balustrade de
pierre, sur lequel s’ouvrait la maîtresse fenêtre du grand salon. Des
bossages vermiculés à refends ornaient les jambages et l’arcade de la porte
fermée de deux vantaux de chêne curieusement sculpté et verni dont les
ferrures luisaient comme de l’acier ou de l’argent.
Les hauts toits d’ardoises délicatement imbriquées et papelonnées
traçaient sur le ciel clair des lignes agréablement correctes,
qu’interrompaient avec symétrie de grands corps de cheminées, sculptés sur
chaque face de trophées et autres attributs. De gros bouquets de plomb d’un
enjolivement touffu se dressaient à chaque
C’était le parc qui s’étendait au loin, vaste, ombreux, seigneurial.... (Page 89.)

angle de ces toits d’un bleu violâtre, où par places luisait joyeusement le
soleil. Des cheminées, quoiqu’il fût de bonne heure et que la saison
n’exigeât pas encore rigoureusement du feu, s’échappaient de petites vrilles
de fumée légère, témoignant d’une vie heureuse, abondante, active. Dans
cette abbaye de Thélème les cuisines étaient déjà éveillées. Montés sur des
chevaux robustes, des gardes-chasse apportaient du gibier pour le repas du
jour; les tenanciers amenaient des provisions que recevaient des officiers de
bouche. Des laquais traversaient la cour, allant porter ou exécuter des
ordres.
Rien n’était plus gai à l’œil que l’aspect de ce château, dont les murs de
briques et de pierres neuves semblaient avoir les couleurs dont la santé
fleurit un visage bien portant. Il donnait l’idée d’une prospérité ascendante,
en plein accroissement, mais non subite comme il plaît aux caprices de la
Fortune, en équilibre sur sa roue d’or qui tourne, d’en distribuer à ses
favoris d’un jour. Sous ce luxe neuf se sentait une richesse ancienne.
Un peu en arrière du château, de chaque côté des ailes, s’arrondissaient
de grands arbres séculaires, dont les cimes se nuançaient de teintes
safranées, mais dont le feuillage inférieur gardait encore de vigoureuses
frondaisons. C’était le parc qui s’étendait au loin, vaste, ombreux, profond,
seigneurial, attestant la prévoyance et la richesse des ancêtres. Car l’or peut
faire pousser rapidement des édifices, mais il ne saurait accélérer la
croissance des arbres, dont peu à peu les rameaux s’augmentent comme
ceux de l’arbre généalogique des maisons qu’ils couvrent et protègent de
leur ombre.
Certes le bon Sigognac n’avait jamais senti les dents venimeuses de
l’envie mordre son honnête cœur et y infiltrer ce poison vert qui bientôt
s’insinue dans les veines, et, charrié avec le sang jusqu’au bout des plus
minces fibrilles, finit par corrompre les meilleurs caractères du monde.
Cependant il ne put refouler tout à fait un soupir en songeant qu’autrefois
les Sigognac avaient le pas sur les Bruyères, pour être de noblesse plus
antique et déjà notoire au temps de la première croisade. Ce château frais,
neuf, pimpant, blanc et vermeil comme les joues d’une jeune fille, adorné
de toutes recherches et magnificences, faisait une satire involontairement
cruelle du pauvre manoir délabré, effondré, tombant en ruine au milieu du
silence et de l’oubli, nid à rats, perchoir de hiboux, hospice d’araignées,
près de s’écrouler sur son maître désastreux qui l’avait quitté au dernier
moment, pour ne pas être écrasé sous sa chute. Toutes les années d’ennui et
de misère que Sigognac y avait passées défilèrent devant ses yeux, les
cheveux souillés de cendre, couvertes de livrées grises, les bras ballants,
dans une attitude de désespérance profonde et la bouche contractée par le
rictus du bâillement. Sans le jalouser, il ne pouvait s’empêcher de trouver le
marquis bien heureux.
En s’arrêtant devant le perron, le chariot tira Sigognac de cette rêverie
qui n’avait rien de fort réjouissant. Il chassa du mieux qu’il put ces
mélancolies intempestives, résorba, par un effort de courage viril, une larme
qui germait furtivement au coin de son œil, et sauta à terre d’une façon
délibérée pour tendre la main à l’Isabelle et aux comédiennes embarrassées
de leurs jupes que le vent matinal faisait ballonner.
Welcome to Our Bookstore - The Ultimate Destination for Book Lovers
Are you passionate about books and eager to explore new worlds of
knowledge? At our website, we offer a vast collection of books that
cater to every interest and age group. From classic literature to
specialized publications, self-help books, and children’s stories, we
have it all! Each book is a gateway to new adventures, helping you
expand your knowledge and nourish your soul
Experience Convenient and Enjoyable Book Shopping Our website is more
than just an online bookstore—it’s a bridge connecting readers to the
timeless values of culture and wisdom. With a sleek and user-friendly
interface and a smart search system, you can find your favorite books
quickly and easily. Enjoy special promotions, fast home delivery, and
a seamless shopping experience that saves you time and enhances your
love for reading.
Let us accompany you on the journey of exploring knowledge and
personal growth!

ebookgate.com

You might also like