· contents i isa library 1 0.1 iato isa library compound list . . . . . . . . . . . . . . . . . ....

319
IATO, IA64 Toolkit Tools and Library Reference Revision 1.0.0 - c 2004 INRIA Amaury Darsch - Pierre Villalon - Andre Seznec

Upload: others

Post on 15-Jul-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

IATO, IA64 Toolkit

Tools and Library Reference

Revision 1.0.0 - c�

2004 INRIA

Amaury Darsch - Pierre Villalon - Andre Seznec

Page 2:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

2

Page 3:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

Contents

I ISA Library 1

0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3

0.2 iato::Aexecute Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 7

0.2.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 8

0.3 iato::Alat Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . 9

0.3.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 10

0.4 iato::Bexecute Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 11

0.4.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 11

0.5 iato::Bundle Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . 12

0.5.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 15

0.6 iato::Cfm Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . 16

0.6.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 18

0.7 iato::Checker Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 19

0.7.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 19

0.8 iato::Ctx Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

0.8.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 22

0.9 iato::Env Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

0.9.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 23

0.10 iato::Exception Class Reference . . . . . . . . . . . . . . . . . . . . . . . 24

0.10.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 25

0.11 iato::Executable Class Reference . . . . . . . . . . . . . . . . . . . . . . . 26

0.11.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 26

0.12 iato::Fexecute Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 27

0.12.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 27

0.13 iato::Filter Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . 28

0.13.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 28

0.14 iato::Fpsr Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . 29

0.14.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 30

i

Page 4:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

ii CONTENTS

0.15 iato::Iexecute Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 31

0.15.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 31

0.16 iato::Instr Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . 32

0.16.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 37

0.17 iato::Interrupt Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 39

0.17.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 41

0.18 iato::Ip Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

0.18.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 43

0.19 iato::Irt Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

0.19.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 45

0.20 iato::Lru Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

0.20.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 46

0.21 iato::MemLogic Class Reference . . . . . . . . . . . . . . . . . . . . . . . 47

0.21.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 47

0.22 iato::Memory Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 48

0.22.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 52

0.23 iato::Mexecute Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 53

0.23.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 53

0.24 iato::Mrt Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

0.24.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 57

0.25 iato::Operand Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 58

0.25.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 59

0.26 iato::Pfs Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

0.26.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 61

0.27 iato::Plugin Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . 62

0.27.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 62

0.28 iato::Psr Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

0.28.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 64

0.29 iato::Record Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . 65

0.29.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 69

0.30 iato::Record::t tynm Struct Reference . . . . . . . . . . . . . . . . . . . . 70

0.30.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 70

0.31 iato::Register Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 71

0.31.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 73

0.32 iato::Resource Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 74

0.32.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 75

Page 5:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

CONTENTS iii

0.33 iato::Result Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . 76

0.33.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 80

0.34 iato::Rid Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

0.34.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 84

0.35 iato::Rpm Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . 85

0.35.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 86

0.36 iato::Rse Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

0.36.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 88

0.37 iato::Rse::State Class Reference . . . . . . . . . . . . . . . . . . . . . . . 89

0.37.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 91

0.38 iato::Segment Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 92

0.38.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 93

0.39 iato::Stat Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

0.39.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 96

0.40 iato::t huge Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . 97

0.40.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 98

0.41 iato::t real Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . 99

0.41.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 105

0.42 iato::Tracer Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . 106

0.42.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 107

0.43 iato::Tracer::Reader Class Reference . . . . . . . . . . . . . . . . . . . . . 108

0.43.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 108

0.44 iato::Umr Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . 109

0.44.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 110

0.45 iato::Uvr Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

0.45.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 112

II ELF Library 113

0.46 IATO ELF LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 115

0.47 iato::ElfArgs Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . 117

0.47.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 118

0.48 iato::ElfBrk Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . 119

0.48.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 119

0.49 iato::ElfBsa Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . 120

0.49.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 120

0.50 iato::ElfChecker Class Reference . . . . . . . . . . . . . . . . . . . . . . . 121

Page 6:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

iv CONTENTS

0.50.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 121

0.51 iato::ElfEnvp Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 122

0.51.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 122

0.52 iato::ElfExec Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 123

0.52.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 123

0.53 iato::ElfImage Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 124

0.53.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 126

0.54 iato::ElfInterp Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 127

0.54.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 127

0.55 iato::ElfKernel Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 129

0.55.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 130

0.56 iato::ElfLoad Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 131

0.56.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 131

0.57 iato::ElfMap Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . 132

0.57.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 132

0.58 iato::ElfMemory Class Reference . . . . . . . . . . . . . . . . . . . . . . . 133

0.58.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 134

0.59 iato::ElfSection Class Reference . . . . . . . . . . . . . . . . . . . . . . . 135

0.59.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 135

0.60 iato::ElfSection::const iterator Class Reference . . . . . . . . . . . . . . . 136

0.60.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 137

0.61 iato::ElfSegment Class Reference . . . . . . . . . . . . . . . . . . . . . . 138

0.61.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 138

0.62 iato::ElfStack Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 139

0.62.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 139

0.63 iato::ElfTable Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 140

0.63.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 141

0.64 iato::ElfText Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . 142

0.64.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 142

0.65 iato::Etx Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

0.65.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 143

III Kernel Library 145

0.66 IATO KERNEL LIBRARY Compound List . . . . . . . . . . . . . . . . . 147

0.67 iato::KrnExit Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 147

0.67.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 148

Page 7:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

CONTENTS v

0.68 iato::Syscall Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . 149

0.68.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 150

IV MAC Library 151

0.69 IATO MAC LIBRARY Compound List . . . . . . . . . . . . . . . . . . . 153

0.70 iato::Bdb Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

0.70.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 160

0.71 iato::Bimodal Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 161

0.71.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 162

0.72 iato::Bpe Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

0.72.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 164

0.73 iato::Bpn Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

0.73.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 166

0.74 iato::Branch Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . 167

0.74.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 168

0.75 iato::Btb Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

0.75.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 170

0.76 iato::Cache Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . 171

0.76.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 172

0.77 iato::CacheBlock Class Reference . . . . . . . . . . . . . . . . . . . . . . 173

0.77.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 173

0.78 iato::CacheDirect Class Reference . . . . . . . . . . . . . . . . . . . . . . 175

0.78.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 175

0.79 iato::Delayable Class Reference . . . . . . . . . . . . . . . . . . . . . . . 176

0.79.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 177

0.80 iato::Detect Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . 178

0.80.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 179

0.81 iato::Disperse Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 180

0.81.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 181

0.82 iato::Dsi Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

0.82.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 184

0.83 iato::Eib Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 185

0.83.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 185

0.84 iato::Eiq Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 186

0.84.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 187

0.85 iato::Gcs Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 188

Page 8:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

vi CONTENTS

0.85.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 189

0.86 iato::Ghpp Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . 190

0.86.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 191

0.87 iato::Gshare Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . 192

0.87.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 193

0.88 iato::Hma Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . 194

0.88.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 195

0.89 iato::Htr Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

0.89.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 197

0.90 iato::Hypp Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . 198

0.90.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 199

0.91 iato::Iib Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 200

0.91.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 201

0.92 iato::Ipb Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

0.92.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 203

0.93 iato::Irb Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 204

0.93.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 205

0.94 iato::Mli Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

0.94.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 206

0.95 iato::Mob Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . 208

0.95.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 209

0.96 iato::Mpr Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . 210

0.96.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 211

0.97 iato::Mta Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 212

0.97.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 213

0.98 iato::Mtx Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

0.98.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 214

0.99 iato::Perceptron Class Reference . . . . . . . . . . . . . . . . . . . . . . . 215

0.99.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 216

0.100iato::Phpp Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . 217

0.100.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 218

0.101iato::Pht Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

0.101.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 220

0.102iato::Pimodal Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 221

0.102.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 222

0.103iato::Pipelane Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 223

Page 9:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

CONTENTS vii

0.103.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 224

0.104iato::Pipeline Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 225

0.104.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 226

0.105iato::Ppag Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . 227

0.105.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 228

0.106iato::Predicate Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 229

0.106.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 231

0.107iato::Pshare Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . 232

0.107.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 233

0.108iato::Rat Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 234

0.108.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 235

0.109iato::ReqBuf Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . 236

0.109.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 236

0.110iato::Restart Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . 238

0.110.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 239

0.111iato::Rob Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 241

0.111.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 243

0.112iato::RseLogic Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 244

0.112.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 245

0.113iato::RseStack Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 246

0.113.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 247

0.114iato::Runnable Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 248

0.114.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 248

0.115iato::Scoreboard Class Reference . . . . . . . . . . . . . . . . . . . . . . . 249

0.115.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 251

0.116iato::Sct Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

0.116.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 253

0.117iato::Slot Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 254

0.117.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 255

0.118iato::Ssi Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 256

0.118.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 258

0.119iato::Stage Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . 259

0.119.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 260

0.120iato::Station Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . 261

0.120.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 262

0.121iato::Stb Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 264

Page 10:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

viii CONTENTS

0.121.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 265

0.122iato::System Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . 266

0.122.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 267

0.123iato::Trb Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 268

0.123.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 269

0.124iato::Urb Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 270

0.124.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 271

0.125iato::Urf Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 272

0.125.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 273

0.126iato::Weakable Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 274

0.126.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . 274

Page 11:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

Part I

ISA Library

1

Page 12:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference
Page 13:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.1. IATO ISA LIBRARY COMPOUND LIST 3

0.1 IATO ISA LIBRARY Compound List

Here are the classes, structs, unions and interfaces with brief descriptions:

iato::Aexecute (The Aexecute (p. 7) is the A execution unit. This unit is sharedby both M and I units. Normally, this class should not be used directly) 7

iato::Alat (The Alat (p. 9) class is an abstract class definition of the Alat (p. 9). Itdefines the basic interface for any Alat (p. 9), a default implementationfor each interface is given) . . . . . . . . . . . . . . . . . . . . . . . . 9

iato::Bexecute (The Bexecute (p. 11) class is the B execution unit. The class isresponsible for all branch operations) . . . . . . . . . . . . . . . . . . . 11

iato::Bundle (The ”Bundle (p. 12)” class is a converter class that is loaded bybytes. Once loaded, the byte stream is decoded like a bundle. Thebundle template, and the instruction can be accessed as well. A stringrepresentation of the template encoding is also available) . . . . . . . . 12

iato::Cfm (The Cfm (p. 16) class is the current frame marker class object. Itholds all the field that are defined by the IA64 ISA. The cfm valueis stored as a single field but specific method can be used to access aparticular one) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

iato::Checker (The Checker (p. 19) class is a simple record checker. The idea isto store a suite of record (typed register check) and compare them witha register bank. If a difference is found an error can be reported. Theidea behind the checker is to automate the test suite process with simpleverification) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

iato::Ctx (The Ctx (p. 20) class is a context class that is used to hold the architec-tural parameters. The default parameters for an architecture are definedat construction. They can be changed globally or individually. Most ofthe parameters can also be defined with a configuration file. The queryis done by name) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

iato::Env (The Environment class is an abstract class that defines an executionenvironment. Such environment is used to hold the global processorresources. The environment is by itself dependant on the processorarchitecture. For example, an out-of-order architecture might have aphysical register file, a reorder buffer and other things) . . . . . . . . . 23

iato::Exception (The Exception (p. 24) class is a basic class that is used excep-tional runtime event, like error or priviledge violation. An exceptionhas a type and a reason) . . . . . . . . . . . . . . . . . . . . . . . . . . 24

iato::Executable (The Executable (p. 26) class is an abstract class for variousexecution unit. The class defines an exec method that uses an operandand produces a result. The instruction to execute is also used as anargument to the exec method) . . . . . . . . . . . . . . . . . . . . . . . 26

iato::Fexecute (The Fexecute (p. 27) class is the F execution unit. The F unit isresponsible to execute the floating point operations) . . . . . . . . . . . 27

iato::Filter (The Filter (p. 28) class is a base class for record filtering. The basefilter is an instruction group filter that can be used for statistical compu-tation. At this level, the desired instruction group are added and a testmethod is provided to select a particular record as an active one or not) . 28

iato::Fpsr (The Fpsr (p. 29) class is the floating point status register class object.It holds all the field that are defined by the IA64 ISA. The Fpsr (p. 29)value is stored as a single field but specific method can be used to accessa particular one. It stands in the application register bank at ar40) . . . . 29

iato::Iexecute (The Iexecute (p. 31) class is the I execution unit. The class isderived from the A execution unit) . . . . . . . . . . . . . . . . . . . . 31

Page 14:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

4

iato::Instr (The Instr (p. 32) class is the instruction decode/recode for the IA64ISA. The class holds as much as information that can be derived fromthe construction. The instruction holds an opcode that indicates the in-struction type. The unit, slot and stop bit are also part of the instructioninformation. The bundle ip for that instruction is also stored. Regis-ter (p. 71) source and destination are store as rid (register id) object.Finally, instruction specific hints are stored as well. An instruction isgenerally constructed from the bundle object. The default instructionis an invalid instruction as indicated by a valid bit. Alternatively, aninstruction can be built by giving the unit, slot number, stop bit flag anda 41 bit coding represented by an octa. Special long instruction uses asecond field to pass the extension. Numerous methods are available toget the instruction information. A special method called ’recode’ builda string a representation of that instruction as specified by the ISA. Aninvalid instruction can be marked by using the ’decode’ method with theproper parameters. Trying to decode an invalid instruction produces anexception) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

iato::Interrupt (The Interrupt (p. 39) class is a special class of exception thatis used to model the IA64 interruption. By itself, an interrupt is not dif-ferent than an exception, except that an instruction (the offending one)can be recorded. There are four classes of interrupts, namely, aborts,interrupt, faults and traps. The interruption priority is given by its codeas recordered in the enumeration type. Note that the IA32 interrupt arenot defined here. This class performs also the interrupt decoding bycomputing (on demand) the interrupt vector, the IIP, the IFA, the IIM,and the ISR. Note that some bit in the ISR are not necessarely set heresince they depends on the execution context (ni bit for example). Allbits that are context dependent are set to 0. In the extreme case that theinterrupt comes from a place where no instruction is available, some ex-tra field are provided to help in resolving the source or error. The baseline information is the ip. In this case, the instruction record is invalid) . 39

iato::Ip (The Ip (p. 42) is the instruction pointer resource. It is built as a resource.The sole purpose of defining the IP as a resource is to unify all specialregisters) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

iato::Irt (The Irt (p. 44) class is the interrupt routing table. The IRT is not partof the IA64 ISA but is defined here as a convenient way to manage in-terrupt in the context of emaultation or simulation. The key function ofthe IRT is to decide whether a particular interrupt will be serviced bythe processor or by a plugin. In the case of an emulation, it is somtimesdesirable to emulate some portion of the processor activity without re-producing all internal operation. For example, a system call that is theresult of an intruction break, might be serviced directly instead or re-computing the whole processor activity. This is where IRT comes intoplay. For each interrupt vector, a configuration code indicates what op-eration needs to be done. The interrupt might be ignored, rethrown (likean exception), processed (using the processor ISA) or emulated (usinga plugin). When the vector is set to operate in plugin mode, control istransfered to the appropriate plugin that will handle the interrupt. Whenthe control is set in processed mode, normal processor operation occursas defined by the ISA) . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

iato::Lru (The Lru (p. 46) class implements the least recently used algorithmwith a n-square matrix. When an update is made, the matrix is auto-matically updated. The lru index is return with the getlru method. Themru index is return with the getmru method) . . . . . . . . . . . . . . . 46

Page 15:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.1. IATO ISA LIBRARY COMPOUND LIST 5

iato::MemLogic (The MemLogic (p. 47) class is a class that handle the inter-ferences between the memory and the alat. The class is updated froma result object. The ALAT is a member of the class while the memoryneeds to be binded) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

iato::Memory (The Memory (p. 48) class is an abstract class that defines thebasic interface for any memory subsystem. Resetting the memory clearall bytes. A memory line can be copied into a buffer. The memoryinterface also defined the read and write endian mode. By default, thememory sub systsem operates in little endian mode. The ’setmode’method can alter this behavior. when set to true, the target memory isworking in big endian mode. Note however that the memory operationwith word, quad and octa are done in the host mode and the necessaryconversion are made automatically. Memory (p. 48) protection is alsodefined here. By default a memory is initialized in read/write mode.Note also that a flag controls whether or not memory alignement checkis done) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

iato::Mexecute (The Mexecute (p. 53) class is the M execution unit. The classis derived from the A execution unit) . . . . . . . . . . . . . . . . . . . 53

iato::Mrt (The Prq class is a simple class used to define memory port request.A request is defined by a type, an address and eventually a data. Suchrequest is generally processed by a port) . . . . . . . . . . . . . . . . . 54

iato::Operand (The Operand (p. 58) class is a simple class that holds an instruc-tion source operand value. The operand is associated with a registernumber. This means that an operand object only holds value associat-ed with a register. During execution, immediate value that are need bya unit are taken from the decoded instruction. The operand object isprimarily used during the evaluation stage) . . . . . . . . . . . . . . . . 58

iato::Pfs (The Pfs (p. 60) class is the previous frame state class object. It holdsall the field that are defined by the IA64 ISA. The pfs value is stored asa single field but specific method can be used to access a particular one) 60

iato::Plugin (The Plugin (p. 62) class is a pseudo-abstract class that implementsthe plugin interface. A plugin acts as a substitute to the processor, inorder to perform certain task. A typical plugin is a system call handler.When properly installed, an emulator or a simulator can trap to the plu-gin and perform the required task, before returning to normal mode.The plugin can operate with any environment resources. It is the pluginconstructor that is responsible to grab all necessary resources needed tooperate correctly. Since the plugin is a resource, the tracer can be acti-vated to record its operation. The plugin can operate in three mode. Thefirst takes no parameter. The second mode operates with an instruction.The third mode operates with an interrupt) . . . . . . . . . . . . . . . . 62

iato::Psr (The Psr (p. 63) class is the processor status register class object. Itholds all the field that are defined by the IA64 ISA. The psr value isstored as a single field but specific method can be used to access a par-ticular one. Note that the psr holds also the user mask register as subset) 63

iato::Record (The Record (p. 65) class is the base class of the trace system. Arecord is a piece of information that needs to be recorded for futureanalysis. A record has a name, a source and a value) . . . . . . . . . . . 65

iato::Record::t tynm (A pair of record type and name) . . . . . . . . . . . . . . 70

Page 16:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

6

iato::Register (The Register (p. 71) class is a complete IA64 ISA register bankimplementation. The bank holds the general purpose (and nat), thefloating, the predicate, the branch, the application and machine specificregisters. A generic read and write method can be used to mute theseregisters. This register bank is configured by default with the IA64 isa.However, for specific implementation, the size of each bank can be re-defined. Note that all operation that uses an operand or a rid operateswith the physical register number. Such number is assumed to be builtfrom the logical number, the rse and any other specific implementation,like a RAT with an out-of-order machine) . . . . . . . . . . . . . . . . 71

iato::Resource (The Resource (p. 74) class is an abstract class that is used bythe environment for reference purpose. A resource is a simple unit thatcan be shared by others. A resource is defined by name and is generallyinstalled in a global environment. The environment can be later queriedby name to retreive a particular resource) . . . . . . . . . . . . . . . . 74

iato::Result (The Result (p. 76) class is a simple class that holds an executionunit result. For each result, a valid bit is associated to discriminate theresult validity. The result object is generated by an execution unit thatuses input result objects. The result class differs from the result classby the number of result and by the existence of a valid bit that indicatesthe execution validity, even if no result is produced) . . . . . . . . . . . 76

iato::Rid (The Rid (p. 81) class is a simple class that binds a logical registernumber with a physical register number. The type of register and avalid bit is also part of this class. The rid class is primarily used usedin the instruction class during decoding. The logical number is threregister number as specified by the instruction encoding. The physicalnumber is a register number used by any renaming logic. By defaultthe physical number equals the logical number. For example, the phys-ical number can be used by the rse to rename some stacked or rotatingregister. Associated with the physical number is a virtual register bit. Ifset, the bit indicates that the physical register number is is a virtual reg-ister that implies a kind of indirection before matching the real physicalregister number. Implementation that do not perform physical registerrenaming, do not need this bit. The gettnum method return the virtualnumber if the virtual bit is set or the physical number. CAUTION: theisready method returns true if the rid is not valid or the register does nothave to be renamed, otherwise it return the ready bit) . . . . . . . . . . 81

iato::Rpm (The Rpm (p. 85) class is a rid pair mapping class that is to mapregister that can eventually generates RAW or WAW legal violation.For example, the br.ret instruction can read register b0 within the sameinstruction group. Such case is a RAW violation but is allowed by theISA. Therefore, the Rpm (p. 85) object map a branch register with theip register) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

iato::Rse (The Rse (p. 87) class is a complete Register (p. 71) Stack Engineclass that is responsible to manage register renaming as well as spillingand filling of the stacked registers. Since the RSE is affected both byinstructions and its internal state, the class separate both functions byoperating virtualy with instruction or results. For exemple, with an em-ulator the rse is affected by instructions (like alloc) or by results (likebr.ret). With a simulator, the rse must be able to operate speculative-ly. For this reason, the rse operates with a state object that defines thecurrent rse state (real or speculative)) . . . . . . . . . . . . . . . . . . . 87

iato::Rse::State (The rse state) . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

Page 17:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.2. IATO::AEXECUTE CLASS REFERENCE 7

iato::Segment (The Segment (p. 92) class is an implementation of the memorycore interface. The segment is defined as an array of bytes that can beaccessed with a particular address. A base is used to offset the memoryaddress) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

iato::Stat (The Stat (p. 94) class is a collection class that can be used to collectvarious isa statistics and even more. The class operates by filling vari-ous information like the program name, its size and then the instructionbeeing executed. The class updates its information on the fly, so at theend, all data are available) . . . . . . . . . . . . . . . . . . . . . . . . 94

iato::t huge (The t huge (p. 97) class is the implementation of a 128 bits integerrepresentation. Since that type is not necessarely available in almost alltarget machine, it has to be emulated. This class is a minimal class thatis supposed to be used internally, to perform some precise computation.Tyically, it is used to support the xmpy and xma instructions. The classcan be constructed with normal octa value or with two octa value to fulldefine it. the lowest and highest representation can be obtained with the’getlow’ and ’gethigh’ methods) . . . . . . . . . . . . . . . . . . . . . 97

iato::t real (The t real (p. 99) class is the implementation of floating point rep-resentations. Two representations are used : One is the IA64 ISA repre-sentation, the other is the machine long double representation. Methodsto cast from one representation to another are menber of the class) . . . 99

iato::Tracer (The Tracer (p. 106) class is a cycle based trace recorder. For agiven cycle the tracer accumulates records until a new trace is started.Traces are accumulated in a vector and can be saved (in a binary form)in a file. The ’setname’ method can be used to set that file name andopen it. When used, the file is opened and a header is written. Whennumber of traces reaches a certain threshold, the traces are saved in thefile. Note that record are saved according to record type and name. Notealso that traces are saved according to their cycle number) . . . . . . . . 106

iato::Tracer::Reader (The trace reader class) . . . . . . . . . . . . . . . . . . . 108iato::Umr (The Umr (p. 109) class is the user mask register. The UMR is a

subset of the processor status register (PSR). The UMR can be modifiedhere and later inserted into the PSR) . . . . . . . . . . . . . . . . . . . 109

iato::Uvr (The Uvr (p. 111) class is a simple class that defines a universal valuerepresentation. The default representation is NAV (not a value. Thevalue can be either an octa, a combination of octa and nat bit, a booleanvalue or a real value) . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

0.2 iato::Aexecute Class Reference

The Aexecute (p. 7) is the A execution unit. This unit is shared by both M and I units.Normally, this class should not be used directly.

#include � Aexecute.hpp �

Inherits iato::Executable.

Inherited by iato::Iexecute, and iato::Mexecute.

Public Methods

� Result exec (const Instr &inst, const Operand &oprd) const

execute this instruction with its operand

Page 18:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

8

Parameters:inst the instruction to executeoprd the operand object.

0.2.1 Detailed Description

The Aexecute (p. 7) is the A execution unit. This unit is shared by both M and I units.Normally, this class should not be used directly.

The documentation for this class was generated from the following file:

� Aexecute.hpp

Page 19:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.3. IATO::ALAT CLASS REFERENCE 9

0.3 iato::Alat Class Reference

The Alat (p. 9) class is an abstract class definition of the Alat (p. 9). It defines the basicinterface for any Alat (p. 9), a default implementation for each interface is given.

#include � Alat.hpp �

Inherits iato::Resource.

Public Methods

� Alat (void)

create a default alat.

� Alat (Ctx � ctx)

create an alat with a contextParameters:

ctx the current context.

� Alat (Ctx � ctx, const string &name)

create an alat with a context and nameParameters:

ctx the current contextname the resource name.

��� Alat (void)

destroy this alat.

� void reset (void)

reset this alat.

� void report (void) const

report this alat.

� bool isfull (void) constReturns:

true if the alat is full.

� bool isvalid (const t word ind) constReturns:

true if the line is valid.

� virtual t word gettag (const Rid reg) const

get a tag according to register type and numberParameters:

reg the regiter ridReturns:

the tag value.

� void add (const t octa addr, const Rid reg, const t byte size)

add a new entry in the alat.

� void memupd (const t octa addr, const t byte size)

Page 20:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

10

notify to alat that a memory address have been changedParameters:

addr the memory address write accessedsize the size of the access.

� void remove (const Rid reg)

remove an entry from the alatParameters:

reg the Rid (p. 81) to remove.

� bool check (const Rid reg) constParameters:

reg the Rid (p. 81) to look forReturns:

true if an entry matches.

� bool load (Result &resl, const long indx)

determine if the load have to be done and update alat stateParameters:

resl the result which contains the loadindx the load index in the result

Returns:true if the load have to be done.

� void check (Result &resl, const long indx)

check and update resultParameters:

resl the result which contains the checkindx the check index in the result.

0.3.1 Detailed Description

The Alat (p. 9) class is an abstract class definition of the Alat (p. 9). It defines the basicinterface for any Alat (p. 9), a default implementation for each interface is given.

The documentation for this class was generated from the following file:

� Alat.hpp

Page 21:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.4. IATO::BEXECUTE CLASS REFERENCE 11

0.4 iato::Bexecute Class Reference

The Bexecute (p. 11) class is the B execution unit. The class is responsible for all branchoperations.

#include � Bexecute.hpp �

Inherits iato::Executable.

Public Methods

� Result exec (const Instr &inst, const Operand &oprd) const

execute this instruction with its operandParameters:

inst the instruction to executeoprd the operand object.

0.4.1 Detailed Description

The Bexecute (p. 11) class is the B execution unit. The class is responsible for all branchoperations.

The documentation for this class was generated from the following file:

� Bexecute.hpp

Page 22:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

12

0.5 iato::Bundle Class Reference

The ”Bundle (p. 12)” class is a converter class that is loaded by bytes. Once loaded, thebyte stream is decoded like a bundle. The bundle template, and the instruction can beaccessed as well. A string representation of the template encoding is also available.

#include � Bundle.hpp �

Public Methods

� Bundle (void)

create a default bundle.

��� Bundle (void)

destroy this bundle.

� Bundle (const Bundle &that)

copy construct this bundleParameters:

that the bundle to copy.

� Bundle & operator= (const Bundle &that)

assign a bundle to this oneParameters:

that the bundle to assign.

� void reset (void)

reset this bundle.

� bool isvalid (void) constReturns:

true if the bundle is valid.

� bool isbr (const long slot) constReturns:

true if the bundle slot is a branch.

� void setbip (const t octa ip)

set the bundle instruction pointerParameters:

ip the instruction pointer.

� t octa getbip (void) constReturns:

the bundle instruction pointer.

� void setsip (const t octa sip, const long ssl)

set the bundle speculative ipParameters:

sip the speculative ipssl the speculative slot.

Page 23:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.5. IATO::BUNDLE CLASS REFERENCE 13

� t octa getsip (void) constReturns:

the bundle speculative ip.

� void setvsb (const long slot, const bool flag)

set the valid slot bitParameters:

slot the slot indexflag the bit value.

� bool getvsb (const long slot) constReturns:

the valid slot bit by index.

� long length (void) constReturns:

the bundle length in bytes.

� void push (const t byte byte)

push a byte in the bufferParameters:

byte the byte to push.

� t byte get (const long index) constParameters:

index the buffer index.

� t byte gettmpl (void) constReturns:

the bundle template code.

� t octa getslot (const long slot) const

get an instruction code by slot indexParameters:

slot the instruction slot.

� Instr getinstr (const long slot) const

get an instruction by slot index.

� string tostring (void) constReturns:

a string representation of this bundle.

� string repr (void) constReturns:

a string representation of this bundle with stop bit.

Static Public Methods

� string tostrws (const t byte tmpl)

return the string representation of a template with stop bits

Page 24:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

14

Parameters:tmpl the template value.

� string tostrwo (const t byte tmpl)

return the string representation of a template without stop bitsParameters:

tmpl the template value.

Static Public Attributes

� const t byte BN MxIxIx = 0x00

MII template.

� const t byte BN MxIxIs = 0x01

MII�template.

� const t byte BN MxIsIx = 0x02

MI�I template.

� const t byte BN MxIsIs = 0x03

MI�I

�template.

� const t byte BN MxLxXx = 0x04

MLX template.

� const t byte BN MxLxXs = 0x05

MLX�template.

� const t byte BN MxMxIx = 0x08

MMI template.

� const t byte BN MxMxIs = 0x09

MMI�template.

� const t byte BN MsMxIx = 0x0A

M�MI template.

� const t byte BN MsMxIs = 0x0B

M�MI

�template.

� const t byte BN MxFxIx = 0x0C

MFI template.

� const t byte BN MxFxIs = 0x0D

MFI�template.

� const t byte BN MxMxFx = 0x0E

MMF template.

Page 25:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.5. IATO::BUNDLE CLASS REFERENCE 15

� const t byte BN MxMxFs = 0x0F

MMF�template.

� const t byte BN MxIxBx = 0x10

MIB template.

� const t byte BN MxIxBs = 0x11

MIB�template.

� const t byte BN MxBxBx = 0x12

MBB template.

� const t byte BN MxBxBs = 0x13

MBB�template.

� const t byte BN BxBxBx = 0x16

BBB template.

� const t byte BN BxBxBs = 0x17

BBB�template.

� const t byte BN MxMxBx = 0x18

MMB template.

� const t byte BN MxMxBs = 0x19

MMB�template.

� const t byte BN MxFxBx = 0x1C

MFB template.

� const t byte BN MxFxBs = 0x1D

MFB�template.

� const long BN MAXTPL = 32

max number of bundle templates.

0.5.1 Detailed Description

The ”Bundle (p. 12)” class is a converter class that is loaded by bytes. Once loaded, thebyte stream is decoded like a bundle. The bundle template, and the instruction can beaccessed as well. A string representation of the template encoding is also available.

The documentation for this class was generated from the following file:

� Bundle.hpp

Page 26:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

16

0.6 iato::Cfm Class Reference

The Cfm (p. 16) class is the current frame marker class object. It holds all the field that aredefined by the IA64 ISA. The cfm value is stored as a single field but specific method canbe used to access a particular one.

#include � Cfm.hpp �

Public Types

� enum t field

the cfm fields.

Public Methods

� Cfm (void)

create a default cfm.

� Cfm (const t octa value)

create a cfm with a valueParameters:

value the cfm value to set.

� Cfm (const Cfm &that)

copy construct this cfmParameters:

that the cfm to copy.

� Cfm & operator= (const Cfm &that)

assign a cfm to this oneParameters:

that the cfm to assign.

� bool operator== (const Cfm &cfm) constReturns:

true if two cfm are equals.

� bool operator== (const t octa val) constReturns:

true if the cfm match an octa.

� bool operator!= (const Cfm &cfm) constReturns:

true if two cfm are not equal.

� bool operator!= (const t octa val) constReturns:

true if the cfm do not match an octa.

� void reset (void)

Page 27:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.6. IATO::CFM CLASS REFERENCE 17

reset this cfm.

� void setcfm (const t octa cfm)

set the cfm valueParameters:

cfm the cfm to set.

� t octa getcfm (void) const

Returns:the resource cfm.

� t octa rotate (void)

Returns:the updated rotated cfm.

� void setfld (t field fld, t byte val)

set the cfm by field and valueParameters:

fld the cfm fieldval the cfm field value.

� t byte getfld (t field fld) const

Returns:the cfm field.

� long getrrb (t field fld) const

Returns:the rrb field as a negative value.

� void setrrb (t field fld, const long val)

set the cfm rrb by field and valueParameters:

fld the cfm fieldval the cfm field value.

Static Public Attributes

� const long GR RRBM = 128

max value of rrb gr.

� const long FR RRBM = 128

max value of rrb fr.

� const long PR RRBM = 64

max value of rrb pr.

Page 28:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

18

0.6.1 Detailed Description

The Cfm (p. 16) class is the current frame marker class object. It holds all the field that aredefined by the IA64 ISA. The cfm value is stored as a single field but specific method canbe used to access a particular one.

The documentation for this class was generated from the following file:

� Cfm.hpp

Page 29:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.7. IATO::CHECKER CLASS REFERENCE 19

0.7 iato::Checker Class Reference

The Checker (p. 19) class is a simple record checker. The idea is to store a suite of record(typed register check) and compare them with a register bank. If a difference is found anerror can be reported. The idea behind the checker is to automate the test suite process withsimple verification.

#include � Checker.hpp �

Public Methods

� Checker (void)

create a default checker.

� Checker (Ctx � ctx)

create a checker with a contextParameters:

ctx the current context.

� virtual � Checker (void)

destroy this checker.

� virtual void reset (void)

reset this checker.

� virtual void add (const Record &rcd)

add a record to the check vectorParameters:

rcd the record to add.

� virtual bool check (Register � rbk) const

check all record against the register bank.

0.7.1 Detailed Description

The Checker (p. 19) class is a simple record checker. The idea is to store a suite of record(typed register check) and compare them with a register bank. If a difference is found anerror can be reported. The idea behind the checker is to automate the test suite process withsimple verification.

The documentation for this class was generated from the following file:

� Checker.hpp

Page 30:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

20

0.8 iato::Ctx Class Reference

The Ctx (p. 20) class is a context class that is used to hold the architectural parameters. Thedefault parameters for an architecture are defined at construction. They can be changedglobally or individually. Most of the parameters can also be defined with a configurationfile. The query is done by name.

#include � Ctx.hpp �

Public Methods

� Ctx (void)

create a new context.

� virtual � Ctx (void)

destroy this context.

� virtual void reset (void)

reset this context.

� void parse (const string &s)

parse a string and update the contextParameters:

s the string to parse.

� virtual void parse (const vector � string � &cprm)

update this context with a vector of parametersParameters:

cprm the vector of parameters.

� void dump (void) const

dump this context to the standard output.

� virtual void update (const t arch arch)

update this context with a particular architectureParameters:

arch the architecture used for the update.

� virtual void setbool (const string &what, const bool value)

set a boolean parameter valueParameters:

what the parameter to setvalue the parameter value.

� virtual bool getbool (const string &what) const

return a boolean parameter valueParameters:

what the parameter to query.

� virtual void setlong (const string &what, const long value)

set a long parameter value

Page 31:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.8. IATO::CTX CLASS REFERENCE 21

Parameters:what the parameter to setvalue the parameter value.

� virtual long getlong (const string &what) const

return a long parameter valueParameters:

what the parameter to query.

� virtual void setllong (const string &what, const t long value)

set a long long parameter valueParameters:

what the parameter to setvalue the parameter value.

� virtual t long getllong (const string &what) const

return a long long parameter valueParameters:

what the parameter to query.

� virtual void setreal (const string &what, const long double value)

set a real parameter valueParameters:

what the parameter to setvalue the parameter value.

� virtual long double getreal (const string &what) const

return a real parameter valueParameters:

what the parameter to query.

� virtual void setstr (const string &what, const string &value)

set a string parameter valueParameters:

what the parameter to setvalue the parameter value.

� virtual string getstr (const string &what) const

return a string parameter valueParameters:

what the parameter to query.

� virtual long getiwsz (void) constReturns:

the issue width size in bundles.

� virtual long getswsz (void) constReturns:

the issue width size in slots.

� virtual long getbwsz (void) constReturns:

the issue width size in bytes.

Page 32:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

22

Protected Attributes

� map � string, bool � d bmap

the boolean map.

� map � string, long � d lmap

the long map.

� map � string, t long � d hmap

the 64 bits long map.

� map � string, long double � d rmap

the real map.

� map � string, string � d smap

the string map.

0.8.1 Detailed Description

The Ctx (p. 20) class is a context class that is used to hold the architectural parameters. Thedefault parameters for an architecture are defined at construction. They can be changedglobally or individually. Most of the parameters can also be defined with a configurationfile. The query is done by name.

The documentation for this class was generated from the following file:

� Ctx.hpp

Page 33:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.9. IATO::ENV CLASS REFERENCE 23

0.9 iato::Env Class Reference

The Environment class is an abstract class that defines an execution environment. Suchenvironment is used to hold the global processor resources. The environment is by itselfdependant on the processor architecture. For example, an out-of-order architecture mighthave a physical register file, a reorder buffer and other things.

#include � Env.hpp �

Public Methods

� Env (void)

create a new environment.

� virtual � Env (void)

destroy this environment.

� virtual void reset (void)

reset this environment.

� virtual void add (Resource � res)

add a new resource to this environmentParameters:

res the resource to add.

� virtual Resource � get (const string &name) const

get a resource by name.

� virtual void report (void) const

report all resources.

� virtual void setstc (Stat � stc)

set the resource stat collectorParameters:

stc the stat collector.

� virtual void settrc (Tracer � tracer)

set the resource tracer to all resourcesParameters:

tracer the resource tracer to bind.

0.9.1 Detailed Description

The Environment class is an abstract class that defines an execution environment. Suchenvironment is used to hold the global processor resources. The environment is by itselfdependant on the processor architecture. For example, an out-of-order architecture mighthave a physical register file, a reorder buffer and other things.

The documentation for this class was generated from the following file:

� Env.hpp

Page 34:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

24

0.10 iato::Exception Class Reference

The Exception (p. 24) class is a basic class that is used exceptional runtime event, like erroror priviledge violation. An exception has a type and a reason.

#include � Exception.hpp �

Inherited by iato::Interrupt.

Public Methods

� Exception (void)

create a default exception.

� Exception (const string &type)

create a new exceptionParameters:

type the exception type.

� Exception (const string &type, const string &reason)

create a new exceptionParameters:

type the exception typereason the exception reason.

� Exception (const Exception &that)

copy construct this exceptionParameters:

that the exception to copy.

� virtual � Exception (void)

destroy this exception.

� Exception & operator= (const Exception &that)

assign an exception to this oneParameters:

that the exception to assign.

� virtual string gettype (void) constReturns:

the exception type.

� virtual string getreason (void) constReturns:

the exception reason.

� virtual void print (void) const

print the exception message.

� virtual void abort (void) const

print the exception and abort.

Page 35:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.10. IATO::EXCEPTION CLASS REFERENCE 25

Protected Attributes

� string d type

the exception type.

� string d reason

the exception reason.

0.10.1 Detailed Description

The Exception (p. 24) class is a basic class that is used exceptional runtime event, like erroror priviledge violation. An exception has a type and a reason.

The documentation for this class was generated from the following file:

� Exception.hpp

Page 36:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

26

0.11 iato::Executable Class Reference

The Executable (p. 26) class is an abstract class for various execution unit. The classdefines an exec method that uses an operand and produces a result. The instruction toexecute is also used as an argument to the exec method.

#include � Executable.hpp �

Inherited by iato::Aexecute, iato::Bexecute, and iato::Fexecute.

Public Methods

� virtual Result exec (const Instr &inst, const Operand &oprd) const=0

execute this instruction with its operandParameters:

inst the instruction to executeoprd the operand object.

0.11.1 Detailed Description

The Executable (p. 26) class is an abstract class for various execution unit. The classdefines an exec method that uses an operand and produces a result. The instruction toexecute is also used as an argument to the exec method.

The documentation for this class was generated from the following file:

� Executable.hpp

Page 37:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.12. IATO::FEXECUTE CLASS REFERENCE 27

0.12 iato::Fexecute Class Reference

The Fexecute (p. 27) class is the F execution unit. The F unit is responsible to execute thefloating point operations.

#include � Fexecute.hpp �

Inherits iato::Executable.

Public Methods

� Result exec (const Instr &inst, const Operand &oprd) const

execute this instruction with its operandParameters:

inst the instruction to executeoprd the operand object.

0.12.1 Detailed Description

The Fexecute (p. 27) class is the F execution unit. The F unit is responsible to execute thefloating point operations.

The documentation for this class was generated from the following file:

� Fexecute.hpp

Page 38:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

28

0.13 iato::Filter Class Reference

The Filter (p. 28) class is a base class for record filtering. The base filter is an instructiongroup filter that can be used for statistical computation. At this level, the desired instructiongroup are added and a test method is provided to select a particular record as an active oneor not.

#include � Filter.hpp �

Public Methods

� Filter (void)

constructor.

� virtual � Filter (void)

destroy a filter.

� Filter & operator= (const Filter &that)

assign a filter to this oneParameters:

that the filter to assign.

� virtual void reset (void)

reset this filter.

� virtual void setig (const string &ig)

set the instruction group to traceParameters:

ig the instruction groups to filter.

� virtual bool check (const Record &rcd) const

check a record for selectionParameters:

rcd the record to test.

� virtual void filter (Tracer::t vrcd � dst, const Tracer::t vrcd � src) const

filter a record vectorParameters:

dst the destination record vectorsrc the source record vector.

0.13.1 Detailed Description

The Filter (p. 28) class is a base class for record filtering. The base filter is an instructiongroup filter that can be used for statistical computation. At this level, the desired instructiongroup are added and a test method is provided to select a particular record as an active oneor not.

The documentation for this class was generated from the following file:

� Filter.hpp

Page 39:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.14. IATO::FPSR CLASS REFERENCE 29

0.14 iato::Fpsr Class Reference

The Fpsr (p. 29) class is the floating point status register class object. It holds all the fieldthat are defined by the IA64 ISA. The Fpsr (p. 29) value is stored as a single field butspecific method can be used to access a particular one. It stands in the application registerbank at ar40.

#include � Fpsr.hpp �

Public Types

� enum t mfield

the fpsr field.

� enum t field

trap fields and status fields.

Public Methods

� Fpsr (void)

create a default fpsr.

� Fpsr (const t octa value)

create a fpsr with a valueParameters:

value the fpsr value to set.

� Fpsr (const Fpsr &that)

copy construct this fpsrParameters:

that the fpsr to copy.

� Fpsr & operator= (const Fpsr &that)

assign a fpsr to this oneParameters:

that the fpsr to assign.

� void reset (void)

reset this fpsr.

� void setfpsr (const t octa value)

set the fpsr by valueParameters:

value the value to set.

� t octa getfpsr (void) const

get the current fpsr value.

� void setfld (const t mfield mfld, const t field fld, const bool value)

Page 40:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

30

set the fpsr by mainfield, field and valueParameters:

mfld the main fieldfld the fieldvalue the value to set.

� void setfld (const t mfield mfld, const t field fld, const t byte value)

set the fpsr by mainfield, field and valueParameters:

mfld the main fieldfld the fieldvalue the value to set.

� bool getbfld (const t mfield mfld, const t field fld) constReturns:

the fpsr bool field by mainfield, field.

� t byte getbsfld (const t mfield mfld, const t field fld) constReturns:

the fpsr 2 bits field by mainfield, field.

� void convert (const t fpipc ipc, const t mfield field, t real &val)

convert ia floating point registerParameters:

ipc the instruction precision control completerfield the floating point status field formatval the real to convert.

� void pconvert (const t mfield field, t real &val1, t real &val2)

convert ia floating point register for parallel computingParameters:

field the floating point status field formatval1 the first real to convertval2 the second real to convert.

0.14.1 Detailed Description

The Fpsr (p. 29) class is the floating point status register class object. It holds all the fieldthat are defined by the IA64 ISA. The Fpsr (p. 29) value is stored as a single field butspecific method can be used to access a particular one. It stands in the application registerbank at ar40.

The documentation for this class was generated from the following file:

� Fpsr.hpp

Page 41:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.15. IATO::IEXECUTE CLASS REFERENCE 31

0.15 iato::Iexecute Class Reference

The Iexecute (p. 31) class is the I execution unit. The class is derived from the A executionunit.

#include � Iexecute.hpp �

Inherits iato::Aexecute.

Public Methods

� Result exec (const Instr &inst, const Operand &oprd) const

execute this instruction with its operandParameters:

inst the instruction to executeoprd the operand object.

0.15.1 Detailed Description

The Iexecute (p. 31) class is the I execution unit. The class is derived from the A executionunit.

The documentation for this class was generated from the following file:

� Iexecute.hpp

Page 42:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

32

0.16 iato::Instr Class Reference

The Instr (p. 32) class is the instruction decode/recode for the IA64 ISA. The class holdsas much as information that can be derived from the construction. The instruction holds anopcode that indicates the instruction type. The unit, slot and stop bit are also part of theinstruction information. The bundle ip for that instruction is also stored. Register (p. 71)source and destination are store as rid (register id) object. Finally, instruction specific hintsare stored as well. An instruction is generally constructed from the bundle object. Thedefault instruction is an invalid instruction as indicated by a valid bit. Alternatively, aninstruction can be built by giving the unit, slot number, stop bit flag and a 41 bit codingrepresented by an octa. Special long instruction uses a second field to pass the extension.Numerous methods are available to get the instruction information. A special method called’recode’ build a string a representation of that instruction as specified by the ISA. An invalidinstruction can be marked by using the ’decode’ method with the proper parameters. Tryingto decode an invalid instruction produces an exception.

#include � Instr.hpp �

Public Methods

� Instr (void)

create a default instruction.

� Instr (t unit unit, long slot, bool bstp, t octa inst)

create an instruction by type/slot/stop and dataParameters:

unit the instruction unitslot the instruction slotbstp the stop bit flaginst the encoded instruction.

� Instr (t unit unit, long slot, bool bstp, t octa inst, t octa extd)

create an instruction by type/slot/stop data and extensionParameters:

unit the instruction unitslot the instruction slotbstp the stop bit flaginst the encoded instructionextd the instruction extension.

� Instr (const Instr &that)

copy construct an instructionParameters:

that the instruction to copy.

� Instr & operator= (const Instr &that)

assign an instruction to this oneParameters:

that the instruction to assign.

� void reset (void)

reset this instruction.

� bool isvalid (void) const

Page 43:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.16. IATO::INSTR CLASS REFERENCE 33

Returns:the instruction valid bit.

� void setiip (const t octa ip)

set the instruction ipParameters:

ip the instruction ip.

� t octa getiip (void) constReturns:

the instruction ip.

� void setsip (const t octa sip)

set the speculative ipParameters:

sip the speculative ip.

� t octa getsip (void) constReturns:

the speculative ip.

� bool getsfl (void) constReturns:

the speculative flag.

� long getslot (void) constReturns:

the instruction slot.

� bool getstop (void) constReturns:

the instruction stop bit.

� string getgroup (void) constReturns:

the instruction group.

� bool isbr (void) constReturns:

the branch bit.

� t octa getdata (void) constReturns:

the instruction data.

� t octa getextd (void) constReturns:

the extension data.

� t iopc getiopc (void) constReturns:

the instruction opcode.

� t unit getbunit (void) const

Page 44:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

34

Returns:the instruction bundle unit.

� t unit getfunit (void) constReturns:

the instruction functional unit.

� t unit getsunit (void) constReturns:

the instruction slot unit.

� bool getldb (void) constReturns:

the load bit.

� bool getstb (void) constReturns:

the store bit.

� bool isnop (void) constReturns:

true if the instruction is a nop.

� t fpcomp getfpcomp (void) constReturns:

the floating point status completer.

� t octa getimmv (const long index) constReturns:

the instruction immediate value.

� Rid getpnum (void) constReturns:

the predicate register number.

� void setpnum (const Rid &pnum)

set the predicate register numberParameters:

pnum the register to set.

� Rid getsnum (const long index) const

get the source register number by indexParameters:

index the source operand index.

� void setsnum (const long index, const Rid &snum)

set the source register numberParameters:

index the source indexsnum the register to set.

� Rid getdnum (const long index) const

get the destination register number by index

Page 45:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.16. IATO::INSTR CLASS REFERENCE 35

Parameters:index the destination operand index.

� void setdnum (const long index, const Rid &dnum)

set the destination register numberParameters:

index the source indexdnum the register to set.

� Rpm getrrpm (const long index) constReturns:

the rid pair map by index.

� Operand getoper (void) constReturns:

the register operand.

� Result getresl (void) constReturns:

the result registers.

� bool ispred (void) constReturns:

true if the instruction is predicated.

� void decode (t unit unit, long slot, bool bstp, t octa inst)

set and decode an instructionParameters:

unit the instruction unitslot the instruction slotbstp the stop bit flaginst the encoded instruction.

� void decode (t unit unit, long slot, bool bstp, t octa inst, t octa extd)

set and decode an instruction with extensiionParameters:

unit the instruction unitslot the instruction slotbstp the stop bit flaginst the encoded instructionextd the extended data.

� string recode (void) constReturns:

a string representation by doing a recoding.

Static Public Methods

� string tostr (const long opcd)Returns:

the string representation of an instruction opcode.

� bool isvig (const string &s)Returns:

true if the instruction group is valid.

Page 46:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

36

Protected Attributes

� bool d valid

valid bit.

� t octa d iip

the instruction ip.

� t octa d sip

the speculative ip.

� bool d sfl

the speculative flag.

� t unit d bunit

instruction bundle unit.

� t unit d funit

instruction functional unit.

� string d group

instruction group.

� long d slot

the slot index.

� bool d stop

stop bit.

� bool d brch

the branch bit.

� t octa d inst

encoded instruction.

� t octa d extd

extension data.

� t byte d code

major group opcode.

� t iopc d opcd

detailed opcode.

� bool d ildb

the load bit.

� bool d istb

the store bit.

Page 47:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.16. IATO::INSTR CLASS REFERENCE 37

� t octa d immv [IA MSRC]

the immediate value.

� t mhint d mhint

move to branch hint.

� t ihint d ihint

move and branch predict completer.

� t bphint d bphint

ip-relative predict hint.

� t ldhint d lhint

load hint.

� t sthint d shint

store hint.

� t phint d phint

branch prefetch hint.

� t bhint d bhint

branch direction hint.

� t chint d chint

branch cache deallocation hint.

� t lfhint d lfhint

line prefetch hint.

� Rid d rprd

the predicate register.

� Rid d rsrc [IA MSRC]

the source register.

� Rpm d rrpm [IA MRPM]

the rid pair violation.

0.16.1 Detailed Description

The Instr (p. 32) class is the instruction decode/recode for the IA64 ISA. The class holdsas much as information that can be derived from the construction. The instruction holds anopcode that indicates the instruction type. The unit, slot and stop bit are also part of theinstruction information. The bundle ip for that instruction is also stored. Register (p. 71)source and destination are store as rid (register id) object. Finally, instruction specific hintsare stored as well. An instruction is generally constructed from the bundle object. Thedefault instruction is an invalid instruction as indicated by a valid bit. Alternatively, aninstruction can be built by giving the unit, slot number, stop bit flag and a 41 bit coding

Page 48:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

38

represented by an octa. Special long instruction uses a second field to pass the extension.Numerous methods are available to get the instruction information. A special method called’recode’ build a string a representation of that instruction as specified by the ISA. An invalidinstruction can be marked by using the ’decode’ method with the proper parameters. Tryingto decode an invalid instruction produces an exception.

The documentation for this class was generated from the following file:

� Instr.hpp

Page 49:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.17. IATO::INTERRUPT CLASS REFERENCE 39

0.17 iato::Interrupt Class Reference

The Interrupt (p. 39) class is a special class of exception that is used to model the IA64interruption. By itself, an interrupt is not different than an exception, except that an in-struction (the offending one) can be recorded. There are four classes of interrupts, namely,aborts, interrupt, faults and traps. The interruption priority is given by its code as recorderedin the enumeration type. Note that the IA32 interrupt are not defined here. This class per-forms also the interrupt decoding by computing (on demand) the interrupt vector, the IIP,the IFA, the IIM, and the ISR. Note that some bit in the ISR are not necessarely set heresince they depends on the execution context (ni bit for example). All bits that are contextdependent are set to 0. In the extreme case that the interrupt comes from a place whereno instruction is available, some extra field are provided to help in resolving the source orerror. The base line information is the ip. In this case, the instruction record is invalid.

#include � Interrupt.hpp �

Inherits iato::Exception.

Public Methods

� Interrupt (void)

create a default interrupt.

� Interrupt (t icode code, const string &reason)

create a new interrupt by type and reasonParameters:

code the interrupt codereason the interrupt reason.

� Interrupt (t icode code, const string &reason, const t octa ip)

create a new interrupt by type, reason and ipParameters:

code the interrupt codereason the interrupt reasonip the offending ip.

� Interrupt (t icode code, const Instr &inst)

create a new interrupt by type and instructionParameters:

code the interrupt codeinst the offending instruction.

� Interrupt (t icode code, const Instr &inst, const string &reason)

create a new interrupt by type, instruction and reasonParameters:

code the interrupt codeinst the offending instructionreason the interrupt reason.

� Interrupt (const Interrupt &that)

copy construct this exceptionParameters:

that the interrupt to copy.

� Interrupt & operator= (const Interrupt &that)

Page 50:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

40

assign an interrupt to this oneParameters:

that the interrupt to assign.

� void reset (void)

reset this interrupt.

� bool isvalid (void) constReturns:

true if the interrupt is valid.

� bool isabort (void) constReturns:

true if the interrupt is abort.

� bool isinter (void) constReturns:

true if the interrupt is inter.

� bool isfault (void) constReturns:

true if the interrupt is a fault.

� bool istrap (void) constReturns:

true if the interrupt is a trap.

� t icode getcode (void) constReturns:

the interruption code.

� void setinst (const Instr &inst)

set the interrupt instructionParameters:

inst the instruction to set.

� Instr getinst (void) constReturns:

the interrupt instruction.

� void setip (const t octa ip)

set the interrupt offending ipParameters:

ip the offending ip.

� t octa getip (void) constReturns:

the offending ip.

� long getslot (void) constReturns:

the offending slot.

Page 51:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.17. IATO::INTERRUPT CLASS REFERENCE 41

� t octa getiim (void) constReturns:

the interrupt immediate value.

� void print (void) const

print the interrupt message.

0.17.1 Detailed Description

The Interrupt (p. 39) class is a special class of exception that is used to model the IA64interruption. By itself, an interrupt is not different than an exception, except that an in-struction (the offending one) can be recorded. There are four classes of interrupts, namely,aborts, interrupt, faults and traps. The interruption priority is given by its code as recorderedin the enumeration type. Note that the IA32 interrupt are not defined here. This class per-forms also the interrupt decoding by computing (on demand) the interrupt vector, the IIP,the IFA, the IIM, and the ISR. Note that some bit in the ISR are not necessarely set heresince they depends on the execution context (ni bit for example). All bits that are contextdependent are set to 0. In the extreme case that the interrupt comes from a place whereno instruction is available, some extra field are provided to help in resolving the source orerror. The base line information is the ip. In this case, the instruction record is invalid.

The documentation for this class was generated from the following file:

� Interrupt.hpp

Page 52:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

42

0.18 iato::Ip Class Reference

The Ip (p. 42) is the instruction pointer resource. It is built as a resource. The sole purposeof defining the IP as a resource is to unify all special registers.

#include � Ip.hpp �

Public Methods

� Ip (void)

create a default ip.

� Ip (const t octa value)

create an ip with a valueParameters:

value the ip value to set.

� Ip (const t octa value, const t octa disp)

create an ip with a value and a displacementParameters:

value the ip value to setdisp the displacement to set.

� Ip (const Ip &that)

copy construct this ipParameters:

that the ip copy.

� Ip & operator= (const Ip &that)

assign an ip to this oneParameters:

that the ip to assign.

� Ip & operator++ (void)

increase that ip by one bundle (prefix).

� Ip operator++ (int)

increase that ip by one bundle (postfix).

� void reset (void)

reset this ip.

� void setip (const t octa ip)

set the ip valueParameters:

ip the ip to set.

� t octa getip (void) constReturns:

the resource ip.

Page 53:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.18. IATO::IP CLASS REFERENCE 43

0.18.1 Detailed Description

The Ip (p. 42) is the instruction pointer resource. It is built as a resource. The sole purposeof defining the IP as a resource is to unify all special registers.

The documentation for this class was generated from the following file:

� Ip.hpp

Page 54:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

44

0.19 iato::Irt Class Reference

The Irt (p. 44) class is the interrupt routing table. The IRT is not part of the IA64 ISAbut is defined here as a convenient way to manage interrupt in the context of emaultationor simulation. The key function of the IRT is to decide whether a particular interrupt willbe serviced by the processor or by a plugin. In the case of an emulation, it is somtimesdesirable to emulate some portion of the processor activity without reproducing all internaloperation. For example, a system call that is the result of an intruction break, might beserviced directly instead or recomputing the whole processor activity. This is where IRTcomes into play. For each interrupt vector, a configuration code indicates what operationneeds to be done. The interrupt might be ignored, rethrown (like an exception), processed(using the processor ISA) or emulated (using a plugin). When the vector is set to operate inplugin mode, control is transfered to the appropriate plugin that will handle the interrupt.When the control is set in processed mode, normal processor operation occurs as definedby the ISA.

#include � Irt.hpp �

Inherits iato::Resource.

Public Types

� enum t imode

the irt mode.

Public Methods

� Irt (void)

create a default irt.

� Irt (Ctx � ctx)

create an irt with a contextParameters:

ctx the current context.

� Irt (Ctx � ctx, const string &name)

create an irt with a context and nameParameters:

ctx the current contextname the resource name.

��� Irt (void)

destroy this irt.

� void reset (void)

reset this irt.

� void report (void) const

report this irt.

� void clear (void)

Page 55:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.19. IATO::IRT CLASS REFERENCE 45

clear this irt.

� void setmode (const t icode code, const t imode mode)

set the irt mode by interrupt codeParameters:

code the interrupt codemode the irt mode.

� t imode getmode (const t icode icode) constReturns:

the irt mode by interrupt code.

� void bind (const t icode code, Plugin � plug)

bind a plugin by interrupt codeParameters:

code the interrupt codeplug the plugin to bind.

� Plugin � getplug (const t icode code) constReturns:

the irt plugin pointer.

� void route (const Interrupt &vi) const

route an interrupt and return a boolean statusParameters:

vi the virtual interrupt.

0.19.1 Detailed Description

The Irt (p. 44) class is the interrupt routing table. The IRT is not part of the IA64 ISAbut is defined here as a convenient way to manage interrupt in the context of emaultationor simulation. The key function of the IRT is to decide whether a particular interrupt willbe serviced by the processor or by a plugin. In the case of an emulation, it is somtimesdesirable to emulate some portion of the processor activity without reproducing all internaloperation. For example, a system call that is the result of an intruction break, might beserviced directly instead or recomputing the whole processor activity. This is where IRTcomes into play. For each interrupt vector, a configuration code indicates what operationneeds to be done. The interrupt might be ignored, rethrown (like an exception), processed(using the processor ISA) or emulated (using a plugin). When the vector is set to operate inplugin mode, control is transfered to the appropriate plugin that will handle the interrupt.When the control is set in processed mode, normal processor operation occurs as definedby the ISA.

The documentation for this class was generated from the following file:

� Irt.hpp

Page 56:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

46

0.20 iato::Lru Class Reference

The Lru (p. 46) class implements the least recently used algorithm with a n-square matrix.When an update is made, the matrix is automatically updated. The lru index is return withthe getlru method. The mru index is return with the getmru method.

#include � Lru.hpp �

Public Methods

� Lru (const long size)

create a lru matrix by size.

��� Lru (void)

destroy this lru matrix.

� void reset (void)

reset this matrix.

� void update (const long index)

update an access by indexParameters:

index the lru matrix index.

� long getlru (void) constReturns:

the lru index.

� long getmru (void) constReturns:

the mru index.

0.20.1 Detailed Description

The Lru (p. 46) class implements the least recently used algorithm with a n-square matrix.When an update is made, the matrix is automatically updated. The lru index is return withthe getlru method. The mru index is return with the getmru method.

The documentation for this class was generated from the following file:

� Lru.hpp

Page 57:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.21. IATO::MEMLOGIC CLASS REFERENCE 47

0.21 iato::MemLogic Class Reference

The MemLogic (p. 47) class is a class that handle the interferences between the memoryand the alat. The class is updated from a result object. The ALAT is a member of the classwhile the memory needs to be binded.

#include � MemLogic.hpp �

Inherits iato::Resource.

Public Methods

� MemLogic (void)

create a default memory logic.

� MemLogic (Ctx � ctx)

create a memory logic with a contextParameters:

ctx the current context.

��� MemLogic (void)

destroy this memory logic.

� void reset (void)

reset this memlogic.

� void bind (Memory � mem)

bind a memory to the logicParameters:

mem the memory to bind.

� void update (Result &resl)

update the memory, the alat and a resultParameters:

resl the result to update.

0.21.1 Detailed Description

The MemLogic (p. 47) class is a class that handle the interferences between the memoryand the alat. The class is updated from a result object. The ALAT is a member of the classwhile the memory needs to be binded.

The documentation for this class was generated from the following file:

� MemLogic.hpp

Page 58:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

48

0.22 iato::Memory Class Reference

The Memory (p. 48) class is an abstract class that defines the basic interface for any mem-ory subsystem. Resetting the memory clear all bytes. A memory line can be copied intoa buffer. The memory interface also defined the read and write endian mode. By default,the memory sub systsem operates in little endian mode. The ’setmode’ method can alterthis behavior. when set to true, the target memory is working in big endian mode. Notehowever that the memory operation with word, quad and octa are done in the host modeand the necessary conversion are made automatically. Memory (p. 48) protection is alsodefined here. By default a memory is initialized in read/write mode. Note also that a flagcontrols whether or not memory alignement check is done.

#include � Memory.hpp �

Inherited by iato::Segment.

Public Methods

� Memory (void)

create a default memory core in little endian mode.

� virtual � Memory (void)

destoy this memory.

� virtual void reset (void)=0

reset this memory.

� void setmode (const bool mode)

set the memory endian modeParameters:

mode the memory endian mode (true = msb).

� void setalign (const bool mode)

set the memory alignement modeParameters:

mode the alignment mode (true = check).

� void setprot (const t byte mode)

set the memory protection modeParameters:

mode the mode to set.

� t byte getprot (void) constReturns:

the memory protection mode.

� virtual bool isvalid (const t octa addr) const=0Returns:

true if the address is valid.

� virtual t byte readbyte (const t octa addr) const=0

read a byte from this memory

Page 59:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.22. IATO::MEMORY CLASS REFERENCE 49

Parameters:addr the address to read.

� virtual t byte readexec (const t octa addr) constReturns:

a byte and check for exec mode.

� virtual t word readword (const t octa addr) const

read a word from this memoryParameters:

addr the address to read.

� virtual t quad readquad (const t octa addr) const

read a quad from this memoryParameters:

addr the address to read.

� virtual t octa readocta (const t octa addr) const

read an octa from this memoryParameters:

addr the address to read.

� virtual t real readsing (const t octa addr) const

read an extended from this memoryParameters:

addr the address to read.

� virtual t real readdoub (const t octa addr) const

read an extended from this memoryParameters:

addr the address to read.

� virtual t real readxten (const t octa addr) const

read an extended from this memoryParameters:

addr the address to read.

� virtual t real readfill (const t octa addr) const

read a fill value from this memoryParameters:

addr the address to read.

� virtual t real readint (const t octa addr) const

read a integer value from this memoryParameters:

addr the address to read.

� virtual void writebyte (const t octa addr, const t byte byte)=0

write a byte at a certain addressParameters:

addr the address to write the bytebyte the byte to write.

Page 60:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

50

� virtual void writeword (const t octa addr, const t word src)

write a word starting at a certain addressParameters:

addr the address to write the bytesrc the 2 bytes to write.

� virtual void writequad (const t octa addr, const t quad src)

write a quad starting at a certain addressParameters:

addr the address to write the bytesrc the 4 bytes to write.

� virtual void writeocta (const t octa addr, const t octa src)

write an octa starting at a certain addressParameters:

addr the address to write the bytesrc the 8 bytes to write.

� virtual void writesing (const t octa addr, const t real &src)

write a single starting at a certain addressParameters:

addr the address to write the bytesrc the real to write.

� virtual void writedoub (const t octa addr, const t real &src)

write a double starting at a certain addressParameters:

addr the address to write the bytesrc the real to write.

� virtual void writexten (const t octa addr, const t real &src)

write an extended starting at a certain addressParameters:

addr the address to write the bytesrc the real to write.

� virtual void writespill (const t octa addr, const t real &src)

write a spill val starting at a certain addressParameters:

addr the address to write the bytesrc the real to write.

� virtual void writeint (const t octa addr, const t real &src)

write an integer val starting at a certain addressParameters:

addr the address to write the bytesrc the real to write.

� virtual long rdbuf (const t octa addr, const long blen, t byte � buf) const

read a memory line to a bufferParameters:

addr the start addressblen the buffer lengthbuf the buffer to copy into.

� virtual long exbuf (const t octa addr, const long blen, t byte � buf) const

Page 61:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.22. IATO::MEMORY CLASS REFERENCE 51

read a memory line to a buffer in execute modeParameters:

addr the start addressblen the buffer lengthbuf the buffer to copy into.

� virtual long wrbuf (const t octa addr, const long blen, const t byte � buf)

write a memory line to a bufferParameters:

addr the start addressblen the buffer lengthbuf the buffer to copy into.

Static Public Attributes

� const t byte PROT NO = 0x00

everything protected.

� const t byte PROT RD = 0x01

read protection.

� const t byte PROT WR = 0x02

write protection.

� const t byte PROT EX = 0x04

execute protection.

� const t byte PROT RW = PROT RD � PROT WR

read, write protection.

� const t byte PROT FU = PROT RD � PROT WR � PROT EX

read, write and execute protection.

Protected Attributes

� bool d emode

the endian mode.

� bool d smode

the swap mode.

� bool d align

the align mode.

� t byte d prot

the protection mode.

Page 62:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

52

0.22.1 Detailed Description

The Memory (p. 48) class is an abstract class that defines the basic interface for any mem-ory subsystem. Resetting the memory clear all bytes. A memory line can be copied intoa buffer. The memory interface also defined the read and write endian mode. By default,the memory sub systsem operates in little endian mode. The ’setmode’ method can alterthis behavior. when set to true, the target memory is working in big endian mode. Notehowever that the memory operation with word, quad and octa are done in the host modeand the necessary conversion are made automatically. Memory (p. 48) protection is alsodefined here. By default a memory is initialized in read/write mode. Note also that a flagcontrols whether or not memory alignement check is done.

The documentation for this class was generated from the following file:

� Memory.hpp

Page 63:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.23. IATO::MEXECUTE CLASS REFERENCE 53

0.23 iato::Mexecute Class Reference

The Mexecute (p. 53) class is the M execution unit. The class is derived from the A execu-tion unit.

#include � Mexecute.hpp �

Inherits iato::Aexecute.

Public Methods

� Result exec (const Instr &inst, const Operand &oprd) const

execute this instruction with its operandParameters:

inst the instruction to executeoprd the operand object.

0.23.1 Detailed Description

The Mexecute (p. 53) class is the M execution unit. The class is derived from the A execu-tion unit.

The documentation for this class was generated from the following file:

� Mexecute.hpp

Page 64:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

54

0.24 iato::Mrt Class Reference

The Prq class is a simple class used to define memory port request. A request is defined bya type, an address and eventually a data. Such request is generally processed by a port.

#include � Mrt.hpp �

Public Types

� enum t mrtt

the memory request type.

Public Methods

� Mrt (void)

create a default mrt.

� Mrt (const t mrtt type, const t octa addr)

create a mrt by type and addressParameters:

type the mrt typeaddr the mrt address.

� Mrt (const Mrt &that)

copy construct this mrtParameters:

that the mrt to copy.

� Mrt & operator= (const Mrt &that)

assign mrt to this oneParameters:

that the mrt to assign.

� void reset (void)

reset this mrt.

� bool isvalid (void) constReturns:

true if the mrt is valid.

� bool isload (void) constReturns:

true if the mrt is a load.

� bool isstore (void) constReturns:

true if the mrt is a store.

� t mrtt gettype (void) constReturns:

the mrt type.

Page 65:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.24. IATO::MRT CLASS REFERENCE 55

� t octa getaddr (void) constReturns:

the mrt address.

� void setbval (const t byte bval)

set the mrt byte valueParameters:

bval the value to set.

� t byte getbval (void) constReturns:

the mrt byte value.

� void setwval (const t word wval)

set the mrt word valueParameters:

wval the value to set.

� t word getwval (void) constReturns:

the mrt word value.

� void setqval (const t quad qval)

set the mrt quad valueParameters:

qval the value to set.

� t quad getqval (void) constReturns:

the mrt quad value.

� void setoval (const t octa oval)

set the mrt octa valueParameters:

oval the value to set.

� t octa getoval (void) constReturns:

the mrt octa value.

� void setlval (const t real &rval)

set the mrt low real valueParameters:

rval the value to set.

� t real getlval (void) constReturns:

the mrt low real value.

� void sethval (const t real &rval)

set the mrt high real value

Page 66:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

56

Parameters:rval the value to set.

� t real gethval (void) constReturns:

the mrt high real value.

� void setlrid (const Rid &rid)

set the mrt low ridParameters:

rid the rid to set.

� Rid getlrid (void) constReturns:

the load low register.

� void sethrid (const Rid &rid)

set the mrt high ridParameters:

rid the rid to set.

� Rid gethrid (void) constReturns:

the load high register.

� void setbnd (const t octa addr)

set a bundle mrt by addressParameters:

addr the request address.

� void setld (t mrtt type, const t octa addr, const Rid &rid)

set the load information by type, address and ridParameters:

type the load type to processaddr the load addressrid the register to load.

� void setld (t mrtt type, const t octa addr, const Rid &lrid, const Rid &hrid)

set the load information by type, address and rid pairParameters:

type the load type to processaddr the load addresslrid the low register to loadhrid the high register to load.

� void setst (t mrtt type, const t octa addr, const t octa oval)

set the store information by type, address and valueParameters:

type the load type to processaddr the load addressoval the octa value to store.

� void setst (t mrtt type, const t octa addr, const t real &rval)

set the store information by type, address and valueParameters:

type the load type to process

Page 67:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.24. IATO::MRT CLASS REFERENCE 57

addr the load addressrval the real value to store.

� void setst (t mrtt type, const t octa addr, const t real &lval, const t real &hval)

set the store information by type, address and pair valueParameters:

type the load type to processaddr the load addresslval the low real value to storehval the high real value to store.

0.24.1 Detailed Description

The Prq class is a simple class used to define memory port request. A request is defined bya type, an address and eventually a data. Such request is generally processed by a port.

The documentation for this class was generated from the following file:

� Mrt.hpp

Page 68:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

58

0.25 iato::Operand Class Reference

The Operand (p. 58) class is a simple class that holds an instruction source operand value.The operand is associated with a register number. This means that an operand object onlyholds value associated with a register. During execution, immediate value that are need bya unit are taken from the decoded instruction. The operand object is primarily used duringthe evaluation stage.

#include � Operand.hpp �

Public Methods

� Operand (void)

create a default operand.

� Operand (const Operand &that)

copy construct an operandParameters:

that the operand to copy.

� Operand & operator= (const Operand &that)

assign an operand to this oneParameters:

that the operand to assign.

� void reset (void)

reset this operand.

� void setrid (const long index, const Rid &rid)

set the operand register idParameters:

index the register indexrid the register id.

� Rid getrid (const long index) constReturns:

the operand register by index.

� bool isvalid (void) constReturns:

true if the operand is valid.

� bool isvalid (const long index) constReturns:

the operand valid bit.

� void setuvr (const long index, const Uvr &uvr)

set the operand by index and uvrParameters:

index the operand indexuvr the uvr operand value.

� void setbval (const long index, const bool value)

Page 69:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.25. IATO::OPERAND CLASS REFERENCE 59

set the operand by index and valueParameters:

index the operand indexvalue the operand value.

� bool getbval (const long index) constReturns:

the operand value by index.

� void setoval (const long index, const t octa value)

set the operand by index and valueParameters:

index the operand indexvalue the operand value.

� t octa getoval (const long index) constReturns:

the operand value by index.

� void setrval (const long index, const t real &value)

set the operand by index and valueParameters:

index the operand indexvalue the operand value.

� t real getrval (const long index) constReturns:

the operand value by index.

0.25.1 Detailed Description

The Operand (p. 58) class is a simple class that holds an instruction source operand value.The operand is associated with a register number. This means that an operand object onlyholds value associated with a register. During execution, immediate value that are need bya unit are taken from the decoded instruction. The operand object is primarily used duringthe evaluation stage.

The documentation for this class was generated from the following file:

� Operand.hpp

Page 70:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

60

0.26 iato::Pfs Class Reference

The Pfs (p. 60) class is the previous frame state class object. It holds all the field that aredefined by the IA64 ISA. The pfs value is stored as a single field but specific method canbe used to access a particular one.

#include � Pfs.hpp �

Public Types

� enum t field

the pfs fields.

Public Methods

� Pfs (void)

create a default pfs.

� Pfs (const t octa value)

create a pfs with a valueParameters:

value the pfs value to set.

� Pfs (const Pfs &that)

copy construct this pfsParameters:

that the pfs to copy.

� Pfs & operator= (const Pfs &that)

assign a pfs to this oneParameters:

that the pfs to assign.

� void reset (void)

reset this pfs.

� void setpfs (const t octa pfs)

set the pfs valueParameters:

pfs the pfs to set.

� t octa getpfs (void) constReturns:

the resource pfs.

� void setfld (t field fld, t octa val)

set the pfs by field and valueParameters:

fld the pfs fieldval the pfs field value.

Page 71:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.26. IATO::PFS CLASS REFERENCE 61

� t octa getfld (t field fld) constReturns:

the pfs field.

0.26.1 Detailed Description

The Pfs (p. 60) class is the previous frame state class object. It holds all the field that aredefined by the IA64 ISA. The pfs value is stored as a single field but specific method canbe used to access a particular one.

The documentation for this class was generated from the following file:

� Pfs.hpp

Page 72:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

62

0.27 iato::Plugin Class Reference

The Plugin (p. 62) class is a pseudo-abstract class that implements the plugin interface. Aplugin acts as a substitute to the processor, in order to perform certain task. A typical pluginis a system call handler. When properly installed, an emulator or a simulator can trap tothe plugin and perform the required task, before returning to normal mode. The plugin canoperate with any environment resources. It is the plugin constructor that is responsible tograb all necessary resources needed to operate correctly. Since the plugin is a resource, thetracer can be activated to record its operation. The plugin can operate in three mode. Thefirst takes no parameter. The second mode operates with an instruction. The third modeoperates with an interrupt.

#include � Plugin.hpp �

Inherits iato::Resource.

Public Methods

� Plugin (const string &name)

create a plugin by nameParameters:

name the plugin name.

� void reset (void)

reset this plugin.

� virtual void apply (void)

apply this plugin.

� virtual void apply (const Interrupt &vi)

apply this plugin with an interruptParameters:

vi the virtul interrupt.

0.27.1 Detailed Description

The Plugin (p. 62) class is a pseudo-abstract class that implements the plugin interface. Aplugin acts as a substitute to the processor, in order to perform certain task. A typical pluginis a system call handler. When properly installed, an emulator or a simulator can trap tothe plugin and perform the required task, before returning to normal mode. The plugin canoperate with any environment resources. It is the plugin constructor that is responsible tograb all necessary resources needed to operate correctly. Since the plugin is a resource, thetracer can be activated to record its operation. The plugin can operate in three mode. Thefirst takes no parameter. The second mode operates with an instruction. The third modeoperates with an interrupt.

The documentation for this class was generated from the following file:

� Plugin.hpp

Page 73:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.28. IATO::PSR CLASS REFERENCE 63

0.28 iato::Psr Class Reference

The Psr (p. 63) class is the processor status register class object. It holds all the field thatare defined by the IA64 ISA. The psr value is stored as a single field but specific methodcan be used to access a particular one. Note that the psr holds also the user mask registeras subset.

#include � Psr.hpp �

Public Types

� enum t field

the psr fields.

� enum t trvfd

the psr test reserved field.

Public Methods

� Psr (void)

create a default psr.

� Psr (const t octa value)

create a psr with a valueParameters:

value the psr value to set.

� Psr (const Psr &that)

copy construct this psrParameters:

that the psr to copy.

� Psr & operator= (const Psr &that)

assign a psr to this oneParameters:

that the psr to assign.

� void reset (void)

reset this psr.

� void setpsr (const t octa psr)

set the psr valueParameters:

psr the psr to set.

� t octa getpsr (void) constReturns:

the resource psr.

� void setumr (const Umr &umr)

Page 74:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

64

set the umr valueParameters:

umr the umr value to set.

� Umr getumr (void) constReturns:

the umr value.

� void setfld (const t field fld, const bool val)

set the psr by field and valueParameters:

fld the psr fieldval the psr field value.

� void setfld (const t field fld, const t byte val)

set the psr by field and valueParameters:

fld the psr fieldval the psr field value.

� bool getfld (const t field fld) constReturns:

the psr boolean field.

� t byte getbyte (const t field fld) constReturns:

the psr byte field.

� bool isrvfd (const t trvfd fd, const t octa value) constReturns:

true if the value marks a reserved field.

0.28.1 Detailed Description

The Psr (p. 63) class is the processor status register class object. It holds all the field thatare defined by the IA64 ISA. The psr value is stored as a single field but specific methodcan be used to access a particular one. Note that the psr holds also the user mask registeras subset.

The documentation for this class was generated from the following file:

� Psr.hpp

Page 75:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.29. IATO::RECORD CLASS REFERENCE 65

0.29 iato::Record Class Reference

The Record (p. 65) class is the base class of the trace system. A record is a piece ofinformation that needs to be recorded for future analysis. A record has a name, a sourceand a value.

#include � Record.hpp �

Public Types

� enum t rctp

the record type.

Public Methods

� Record (void)

create a default record.

� Record (const string &rsrc)

create a default record by sourceParameters:

rsrc the record source.

� Record (const string &rsrc, const Bundle &bndl)

create a record by source and bundleParameters:

rsrc the record sourcebndl the bundle object.

� Record (const string &rsrc, const Instr &inst)

create a record by source and instructionParameters:

rsrc the record sourceinst the instruction object.

� Record (const string &rsrc, const Instr &inst, const bool flag)

create a record by source, instruction and exec flagParameters:

rsrc the record sourceinst the instruction objectflag the execute flag (as ooposed to cancel).

� Record (const string &rsrc, const Instr &inst, const bool flag, const t octa tg)

create a record by source, instruction, cancel flag and target ipParameters:

rsrc the record sourceinst the instruction objectflag the cancel flagtg the target value.

� Record (const string &rsrc, const Result &resl, const long index)

create a record by source, result and index

Page 76:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

66

Parameters:rsrc the record sourceresl the result objectindex the result index.

� Record (const string &rsrc, const Operand &oprd, const long index)

create a record by source, operand and indexParameters:

rsrc the record sourceoprd the operand objectindex the operand index.

� Record (const string &rsrc, const t octa ip, const long ridx)

create a record by source, ip and allocated indexParameters:

rsrc the record sourceip the record ipridx the record index.

� Record (const Record &that)

copy construct this recordParameters:

that the record to copy.

� Record & operator= (const Record &that)

assign a record to this oneParameters:

that the record to assign.

� void setname (const string &rsrc)

set the record source nameParameters:

rsrc the record source name.

� string getname (void) constReturns:

the record source name.

� void settype (t rctp type)

set the record typeParameters:

type the record type to set.

� t rctp gettype (void) constReturns:

the record type.

� bool isignore (void) constReturns:

true if the record is of type ignore.

� void setrdta (const t octa addr, const long rlen)

set a record read transaction ackowldgeParameters:

addr the request addressrlen the request length.

Page 77:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.29. IATO::RECORD CLASS REFERENCE 67

� void setbndl (const Bundle &bndl)

set the record with a bundleParameters:

bndl the bundle to set.

� void setinst (const Instr &inst)

set the record with an instructionParameters:

inst the instruction to set.

� void setcanc (const Instr &inst)

set the record with a cancel instructionParameters:

inst the instruction to set.

� void setbr (const Instr &inst, const bool flg, const t octa tg)

set the record with a branch instructionParameters:

inst the instruction to setflg the cancel flagtg the branch target value.

� void setrsch (const Instr &inst)

set the record with a rescheduled instructionParameters:

inst the instruction to set.

� void setresl (const Result &resl, const long index)

set the record with a result and indexParameters:

resl the result to setindex the result index.

� void setoprd (const Operand &oprd, const long index)

set the record with an operand and indexParameters:

oprd the operand to setindex the operand index.

� void setrchk (const t byte lreg, const t byte pnum, const t octa data)

set a record with checking dataParameters:

lreg the register typepnum the register numberdata the register value.

� void setrchk (const t byte lreg, const t byte pnum, const t octa data1, const t octadata2)

set a record with checking data for floatting pointParameters:

lreg the register typepnum the register numberdata1 the high part floating register valuedata2 the low part floatting register value.

Page 78:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

68

� void setrcda (const t octa ip, const long ridx)

set the record with an ip and indexParameters:

ip the record ipridx the record index.

� void setrmem (const t octa addr, const t octa oval, const t byte size)

set the record with a memory read access informationParameters:

addr the memory addressoval the octa valuesize the access size.

� void setwmem (const t octa addr, const t octa oval, const t byte size)

set the record with a memory write access informationParameters:

addr the memory addressoval the octa valuesize the access size.

� void setalat (const t word tag, const t octa addr, const t byte size, const bool add)

set the record with an alat actionParameters:

tag the tagaddr the memory addresssize the access sizeadd the add flag bit.

� string repr (void) constReturns:

a string representation of this record.

� void print (void) const

print the record information.

� t lreg chklreg (void) constReturns:

the record check register type.

� long chkpnum (void) constReturns:

the record check register number.

� bool chkbval (void) constReturns:

the record check boolean value.

� t octa chkoval (void) constReturns:

the record check octa value.

� t real chkrval (void) constReturns:

the record check real value.

� void rcdwr (int fd) const

Page 79:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.29. IATO::RECORD CLASS REFERENCE 69

write the record info a fileParameters:

fd the file descriptor.

� void rcdrd (int fd)

read and update a record from a fileParameters:

fd the file descriptor.

� Instr getinst (void) constReturns:

an instruction from an instruction record.

� bool iscancel (void) constReturns:

true if the instruction is canceled.

� bool istip (void) constReturns:

true if the instruction has the tip set.

� bool isresched (void) constReturns:

true if the instruction is rescheduled.

� Bundle getbnd (void) constReturns:

a bundle from a bundle record.

� t octa gettip (void) constReturns:

the target ip.

Static Public Methods

� t rctp totype (const string &s)

convert a string to a record typeParameters:

s the type string to convert.

0.29.1 Detailed Description

The Record (p. 65) class is the base class of the trace system. A record is a piece ofinformation that needs to be recorded for future analysis. A record has a name, a sourceand a value.

The documentation for this class was generated from the following file:

� Record.hpp

Page 80:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

70

0.30 iato::Record::t tynm Struct Reference

a pair of record type and name.

#include � Record.hpp �

0.30.1 Detailed Description

a pair of record type and name.

The documentation for this struct was generated from the following file:

� Record.hpp

Page 81:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.31. IATO::REGISTER CLASS REFERENCE 71

0.31 iato::Register Class Reference

The Register (p. 71) class is a complete IA64 ISA register bank implementation. The bankholds the general purpose (and nat), the floating, the predicate, the branch, the applicationand machine specific registers. A generic read and write method can be used to mute theseregisters. This register bank is configured by default with the IA64 isa. However, forspecific implementation, the size of each bank can be redefined. Note that all operationthat uses an operand or a rid operates with the physical register number. Such number isassumed to be built from the logical number, the rse and any other specific implementation,like a RAT with an out-of-order machine.

#include � Register.hpp �

Inherits iato::Resource.

Public Methods

� Register (void)

create a default register bank.

� Register (Ctx � ctx)

create a register bank with a contextParameters:

ctx the current context.

� Register (Ctx � ctx, const string &name)

create a register bank with a context and nameParameters:

ctx the current contextname the resource name.

��� Register (void)

destroy this register bank.

� void reset (void)

reset the register.

� void report (void) const

report this register bank.

� void write (t lreg lreg, const long index, const t octa value)

write a register by type, index and valueParameters:

lreg the register typeindex the register indexvalue the register value.

� void write (t lreg lreg, const long index, const bool value)

write a register by type, index and valueParameters:

lreg the register typeindex the register indexvalue the register value.

Page 82:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

72

� void write (t lreg lreg, const long index, const t real &value)

write a register by type, index and valueParameters:

lreg the register typeindex the register indexvalue the register value.

� void write (const Result &resl)

write a result to the register fileParameters:

resl the result to write.

� t octa getoval (t lreg lreg, const long index) const

read a register value by typeParameters:

lreg the register typeindex the register index.

� bool getbval (t lreg lreg, const long index) const

read a register value by typeParameters:

lreg the register typeindex the register index.

� t real getrval (t lreg lreg, const long index) const

read a register value by typeParameters:

lreg the register typeindex the register index.

� t octa getoval (const Rid &rid) const

evaluate a register with a ridParameters:

rid the register id.

� bool getbval (const Rid &rid) const

evaluate a register with a ridParameters:

rid the register id.

� t real getrval (const Rid &rid) const

evaluate a register with a ridParameters:

rid the register id.

� void eval (Operand &oprd) const

evaluate an operand from the bankParameters:

oprd the operand to evaluate.

� bool check (const Record &rcd) const

check one record against the register file contentParameters:

rcd the record to check.

Page 83:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.31. IATO::REGISTER CLASS REFERENCE 73

0.31.1 Detailed Description

The Register (p. 71) class is a complete IA64 ISA register bank implementation. The bankholds the general purpose (and nat), the floating, the predicate, the branch, the applicationand machine specific registers. A generic read and write method can be used to mute theseregisters. This register bank is configured by default with the IA64 isa. However, forspecific implementation, the size of each bank can be redefined. Note that all operationthat uses an operand or a rid operates with the physical register number. Such number isassumed to be built from the logical number, the rse and any other specific implementation,like a RAT with an out-of-order machine.

The documentation for this class was generated from the following file:

� Register.hpp

Page 84:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

74

0.32 iato::Resource Class Reference

The Resource (p. 74) class is an abstract class that is used by the environment for referencepurpose. A resource is a simple unit that can be shared by others. A resource is definedby name and is generally installed in a global environment. The environment can be laterqueried by name to retreive a particular resource.

#include � Resource.hpp �

Inherited by iato::Alat, iato::Irt, iato::MemLogic, iato::Plugin, iato::Register, and ia-to::Rse.

Public Methods

� Resource (void)

create a default resource.

� Resource (const string &name)

create a new resource by nameParameters:

name the reource name.

� Resource (const Resource &that)

copy construct this resourceParameters:

that the resource to copy.

� virtual � Resource (void)

destroy this resource.

� Resource & operator= (const Resource &that)

assign a resource to this oneParameters:

that the resource to assign.

� virtual void reset (void)=0

reset this resource.

� virtual void report (void) const

report some resource information.

� virtual void setname (const string &name)

set the resource nameParameters:

name the resource name to set.

� virtual string getname (void) constReturns:

the resource name.

� virtual void setstc (Stat � stc)

set the resource stat collector

Page 85:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.32. IATO::RESOURCE CLASS REFERENCE 75

Parameters:stc the stat collector.

� virtual void settrc (Tracer � tracer)

set the resource tracerParameters:

tracer the resource tracer.

Protected Attributes

� string d name

the resource name.

� Stat � p stat

the resource stat.

� Tracer � p tracer

the resource tracer.

0.32.1 Detailed Description

The Resource (p. 74) class is an abstract class that is used by the environment for referencepurpose. A resource is a simple unit that can be shared by others. A resource is definedby name and is generally installed in a global environment. The environment can be laterqueried by name to retreive a particular resource.

The documentation for this class was generated from the following file:

� Resource.hpp

Page 86:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

76

0.33 iato::Result Class Reference

The Result (p. 76) class is a simple class that holds an execution unit result. For each result,a valid bit is associated to discriminate the result validity. The result object is generatedby an execution unit that uses input result objects. The result class differs from the resultclass by the number of result and by the existence of a valid bit that indicates the executionvalidity, even if no result is produced.

#include � Result.hpp �

Public Types

� enum t rop

the result operation type.

Public Methods

� Result (void)

create a default result.

� Result (const long index, const bool value)

create a result by index and valueParameters:

index the result indexvalue the result value.

� Result (const long index, const t octa value)

create a result by index and valueParameters:

index the result indexvalue the result value.

� Result (const long index, const t real &value)

create a result by index and valueParameters:

index the result indexvalue the result value.

� Result (const Result &that)

copy construct an resultParameters:

that the result to copy.

� Result & operator= (const Result &that)

assign an result to this oneParameters:

that the result to assign.

� void reset (void)

reset this result.

Page 87:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.33. IATO::RESULT CLASS REFERENCE 77

� void setrid (const long index, const Rid &rid)

set the result register idParameters:

index the register indexrid the register id.

� Rid getrid (const long index) constReturns:

the result register by index.

� void setvalid (const bool flag)

set the valid bitParameters:

flag the valid bit to set.

� bool isvalid (void) constReturns:

true if the result is valid.

� bool isnone (const long index) constReturns:

true if the result rop is none.

� bool isreg (const long index, t lreg lreg) const

return true if a rid as the right typeParameters:

index the register indexlreg the register type.

� bool isreg (t lreg lreg) constReturns:

true if one rid has the register type.

� t rop getrop (const long index) constReturns:

the result rop by index.

� t octa getrip (void) constReturns:

the result ip.

� void setrrt (const long index, const bool flag)

set the reroute flag for a predicate registerParameters:

index the register indexflag the reroute flag to set.

� void setaddr (const long index, t rop rop, const t octa addr)

set the load/store address by indexParameters:

index the index to setrop the operation to setaddr the address to set.

� t octa getaddr (const long index) const

Page 88:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

78

Returns:the load/store address.

� void setimmv (const long index, const t octa value)

set an immediate value for storeParameters:

index the result indexvalue the result value.

� void setrimv (const long index, const t real value)

set a real value for storeParameters:

index the result indexvalue the result value.

� t octa getimmv (const long index) constReturns:

the immediate store value by index.

� t real getrimv (const long index) constReturns:

the real store value by index.

� Uvr getuvr (const long index) constReturns:

the result uvr value by index.

� void setbval (const long index, const bool value)

set the result by index and valueParameters:

index the result indexvalue the result value.

� void setbval (const Rid &rid, const bool value)

set the result by rid and valueParameters:

rid the result ridvalue the result value.

� bool getbval (const long index) constReturns:

the result value by index.

� void setoval (const long index, const t octa value)

set the result by index and valueParameters:

index the result indexvalue the result value.

� void setoval (const long index, t rop rop, const t octa value)

set the result by index rop and and valueParameters:

index the result indexrop the rop to setvalue the result value.

Page 89:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.33. IATO::RESULT CLASS REFERENCE 79

� void setoval (const Rid &rid, const t octa value)

set the result by rid and valueParameters:

rid the result ridvalue the result value.

� t octa getoval (const long index) constReturns:

the result value by index.

� void setrval (const long index, const t real &value)

set the result by index and valueParameters:

index the result indexvalue the result value.

� void setrval (const Rid &rid, const t real &value)

set the result by rid and valueParameters:

rid the result ridvalue the result value.

� t real getrval (const long index) constReturns:

the result value by indexParameters:

index the result index.

� void setuval (const Rid &rid, const Uvr &value)

set the result by rid and valueParameters:

rid the result ridvalue the result value.

� void setaset (const long index, const bool value)

set the alat flag by indexParameters:

index the result indexvalue the value to set.

� void setachk (const long index, const bool value)

set the alat check by indexParameters:

index the result indexvalue the value to set.

� void setaclr (const long index, const bool value)

set the alat clear by indexParameters:

index the result indexvalue the value to set.

� void setspec (const long index, const bool value)

set the speculation bit

Page 90:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

80

Parameters:index the result indexvalue the value to set.

� bool getaset (const long index) constReturns:

the alat bit boolean value.

� bool getachk (const long index) constReturns:

the alat check bit boolean value.

� bool getaclr (const long index) constReturns:

the alat clear bit boolean value.

� bool getspec (const long index) constReturns:

the speculative bit boolean value.

� void setinv (const long index)

set the alat index to invalidateParameters:

index the result rid index to invalidate.

� Mrt getmrt (void) constReturns:

the result associated mrt.

� void update (const Mrt &mrt)

update a result by mrtParameters:

mrt the mrt used for update.

0.33.1 Detailed Description

The Result (p. 76) class is a simple class that holds an execution unit result. For each result,a valid bit is associated to discriminate the result validity. The result object is generatedby an execution unit that uses input result objects. The result class differs from the resultclass by the number of result and by the existence of a valid bit that indicates the executionvalidity, even if no result is produced.

The documentation for this class was generated from the following file:

� Result.hpp

Page 91:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.34. IATO::RID CLASS REFERENCE 81

0.34 iato::Rid Class Reference

The Rid (p. 81) class is a simple class that binds a logical register number with a physicalregister number. The type of register and a valid bit is also part of this class. The rid classis primarily used used in the instruction class during decoding. The logical number is threregister number as specified by the instruction encoding. The physical number is a registernumber used by any renaming logic. By default the physical number equals the logicalnumber. For example, the physical number can be used by the rse to rename some stackedor rotating register. Associated with the physical number is a virtual register bit. If set,the bit indicates that the physical register number is is a virtual register that implies a kindof indirection before matching the real physical register number. Implementation that donot perform physical register renaming, do not need this bit. The gettnum method returnthe virtual number if the virtual bit is set or the physical number. CAUTION: the isreadymethod returns true if the rid is not valid or the register does not have to be renamed,otherwise it return the ready bit.

#include � Rid.hpp �

Public Methods

� Rid (void)

create register number.

� Rid (const Rid &that)

copy construct a register numberParameters:

that the register to copy.

� Rid & operator= (const Rid &that)

assign a register number to this oneParameters:

that the register to assign.

� bool operator== (const Rid &rid) constReturns:

true if two rid are equals.

� void reset (void)

reset this register number.

� bool isvalid (void) constReturns:

true if the register is valid.

� void seterdy (const bool erdy)

set the eval ready bitParameters:

erdy the eval ready bit to set.

� void seterdy (const Rid &rid)

set the eval ready bit if both rid are equal

Page 92:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

82

Parameters:rid the rid to compare.

� bool geterdy (void) constReturns:

the eval ready bit.

� void clrvbit (void)

clear the virtual bit.

� void clrvbit (const Rid &rid)

clear the virtual bit by ridParameters:

rid the rid to compare.

� bool islrnm (void) constReturns:

true if the rid must be logically renamed.

� bool isready (void) constReturns:

true if the rid is ready, invalid rid returns true.

� t lreg gettype (void) const

return the register type.

� long getlnum (void) const

return the logical register number.

� long getpnum (void) const

return the physical register number.

� bool getvbit (void) constReturns:

the register virtual bit.

� long getvnum (void) constReturns:

the register virtual number.

� long getonum (void) constReturns:

the old register virtual number.

� long gettnum (void) constReturns:

the target register number.

� void setlnum (t lreg type, const long lnum)

set the logical number by typeParameters:

type the register typelnum the logical register number.

Page 93:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.34. IATO::RID CLASS REFERENCE 83

� void setpnum (const long pnum)

set the physical register numberParameters:

pnum the physical register number.

� void setvnum (const long vnum)

set the virtual register number and virtual bitParameters:

vnum the virtual register number.

� void setvnum (const long vnum, const long onum)

set the virtual register number and virtual bitParameters:

vnum the virtual register numberonum the old virtual number.

� void setreg (t lreg type, const long lnum, const long pnum)

set a register by type and numberParameters:

type the register typelnum the logical register numberpnum the physical register number.

� string tostring (void) constReturns:

a string representation of the rid.

Protected Attributes

� bool d valid

the valid bit.

� t lreg d type

the register type.

� long d lnum

the logical register number.

� long d pnum

the physical register number.

� bool d vbit

the virtual register bit.

� long d vnum

the virtual register number.

� long d onum

the old virtual number.

Page 94:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

84

� bool d erdy

the eval ready bit.

0.34.1 Detailed Description

The Rid (p. 81) class is a simple class that binds a logical register number with a physicalregister number. The type of register and a valid bit is also part of this class. The rid classis primarily used used in the instruction class during decoding. The logical number is threregister number as specified by the instruction encoding. The physical number is a registernumber used by any renaming logic. By default the physical number equals the logicalnumber. For example, the physical number can be used by the rse to rename some stackedor rotating register. Associated with the physical number is a virtual register bit. If set,the bit indicates that the physical register number is is a virtual register that implies a kindof indirection before matching the real physical register number. Implementation that donot perform physical register renaming, do not need this bit. The gettnum method returnthe virtual number if the virtual bit is set or the physical number. CAUTION: the isreadymethod returns true if the rid is not valid or the register does not have to be renamed,otherwise it return the ready bit.

The documentation for this class was generated from the following file:

� Rid.hpp

Page 95:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.35. IATO::RPM CLASS REFERENCE 85

0.35 iato::Rpm Class Reference

The Rpm (p. 85) class is a rid pair mapping class that is to map register that can eventuallygenerates RAW or WAW legal violation. For example, the br.ret instruction can read regis-ter b0 within the same instruction group. Such case is a RAW violation but is allowed bythe ISA. Therefore, the Rpm (p. 85) object map a branch register with the ip register.

#include � Rpm.hpp �

Public Types

� typedef Uvr( � t rfm )(const Uvr &)

the register mapping function.

Public Methods

� Rpm (void)

create a default rpm.

� Rpm (const Rid &src, const Rid &dst)

create a rpm with a source and destination ridParameters:

src the source riddst the destination rid.

� Rpm (const Rpm &that)

copy construct this rpmParameters:

that the rpm to copy.

� Rpm & operator= (const Rpm &that)

assign a rpm to this oneParameters:

that the rpm to assign.

� void reset (void)

reset this rpm.

� bool isvalid (void) constReturns:

true if the rpm is valid.

� void setmap (const Rid &src, const Rid &dst)

set the rpm mapping by source and destinationParameters:

src the source riddst the destination rid.

� void setmap (const Rid &src, const Rid &dst, t rfm rfm)

set the rpm mapping by source, destination and function mapping

Page 96:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

86

Parameters:src the source riddst the destination ridrfm the rpm function mapping.

� Rid getsrc (void) constReturns:

the source rid.

� Rid getdst (void) constReturns:

the destination rid.

� t rfm getrfm (void) constReturns:

the mapping function.

0.35.1 Detailed Description

The Rpm (p. 85) class is a rid pair mapping class that is to map register that can eventuallygenerates RAW or WAW legal violation. For example, the br.ret instruction can read regis-ter b0 within the same instruction group. Such case is a RAW violation but is allowed bythe ISA. Therefore, the Rpm (p. 85) object map a branch register with the ip register.

The documentation for this class was generated from the following file:

� Rpm.hpp

Page 97:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.36. IATO::RSE CLASS REFERENCE 87

0.36 iato::Rse Class Reference

The Rse (p. 87) class is a complete Register (p. 71) Stack Engine class that is responsible tomanage register renaming as well as spilling and filling of the stacked registers. Since theRSE is affected both by instructions and its internal state, the class separate both functionsby operating virtualy with instruction or results. For exemple, with an emulator the rse isaffected by instructions (like alloc) or by results (like br.ret). With a simulator, the rse mustbe able to operate speculatively. For this reason, the rse operates with a state object thatdefines the current rse state (real or speculative).

#include � Rse.hpp �

Inherits iato::Resource.

Public Methods

� Rse (void)

create a default rse.

� Rse (Ctx � ctx)

create a rse with a contextParameters:

ctx the current context.

� Rse (Ctx � ctx, const string &name)

create a rse with a context and a nameParameters:

ctx the current contextname the resource name.

� void reset (void)

reset the rse.

� virtual void flush (void)

flush this rse.

� virtual void setste (const State &state)

set the rse state by stateParameters:

state the state to set.

� virtual State getste (void) constReturns:

the current rse state.

� virtual void setsst (const State &state)

set the speculative rse state by stateParameters:

state the state to set.

� virtual State getsst (void) constReturns:

the speculative rse state.

Page 98:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

88

� virtual bool validate (const Cfm &cfm) const

validate a state against a cfm.

� virtual void rename (Instr &inst) const

rename an instruction with the rseParameters:

inst the instruction to rename.

� virtual void preset (const Instr &inst)=0

preset the rse state with an instructionParameters:

inst the instruction used to preset.

� virtual void aftset (const Instr &inst)=0

after set the rse state with an instructionParameters:

inst the instruction used to after set.

� virtual void update (const Result &resl)=0

update the rse state with a resultParameters:

resl the result used to update.

Protected Attributes

� long d ngr

the number of logical register.

� State d state

the rse state.

0.36.1 Detailed Description

The Rse (p. 87) class is a complete Register (p. 71) Stack Engine class that is responsible tomanage register renaming as well as spilling and filling of the stacked registers. Since theRSE is affected both by instructions and its internal state, the class separate both functionsby operating virtualy with instruction or results. For exemple, with an emulator the rse isaffected by instructions (like alloc) or by results (like br.ret). With a simulator, the rse mustbe able to operate speculatively. For this reason, the rse operates with a state object thatdefines the current rse state (real or speculative).

The documentation for this class was generated from the following file:

� Rse.hpp

Page 99:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.37. IATO::RSE::STATE CLASS REFERENCE 89

0.37 iato::Rse::State Class Reference

the rse state.

#include � Rse.hpp �

Public Methods

� State (void)

create a default rse state.

� State (const long ngr)

create a rse state with a register sizeParameters:

ngr the number of logical register.

� State (const long ngr, const Cfm &cfm)

create a rse state with a register size and a cfmParameters:

ngr the number of logical registercfm the cfm used to set the state.

� void reset (void)

reset this rse state.

� bool operator== (const State &that) const

compare a state with another one.

� void setngr (const long ngr)

set the number of general registerParameters:

ngr the number of general registers.

� Cfm getcfm (void) constReturns:

the cfm associated with this state.

� void setcfm (const Cfm &cfm)

set the state with a cfmParameters:

cfm the cfm used to set the rse state.

� long getbof (void) constReturns:

the state bottom of frame.

� void setbof (const long val)

set the state with a bottom of frameParameters:

val the bottom of frame value.

� bool chkcfm (const Cfm &cfm) const

Page 100:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

90

check that the cfm state equal the calling cfmParameters:

cfm the cfm to check.

� void alloc (const Cfm &cfm)

update the rse state for an allocParameters:

cfm the cfm used to update the rse state.

� void call (const Cfm &cfm)

update the rse state for a callParameters:

cfm the cfm used to update the rse state.

� void retn (const Cfm &cfm)

update the rse state for a returnParameters:

cfm the cfm used to update the rse state.

� void loop (const Cfm &cfm)

update the rse state for a branch loopParameters:

cfm the cfm used to update the rse state.

� long mapgr (const long lnum, const bool rwf) const

map the general register indexParameters:

lnum the logical register numberrwf the read write flag (false = read).

� long mapfr (const long lnum) const

map the floating register indexParameters:

lnum the logical register number.

� long mappr (const long lnum) const

map the predicate register indexParameters:

lnum the logical register number.

� Rid maprid (const Rid &rid, const bool rwf) const

map a rid by doing register renamingParameters:

rid the rid to renamerwf the read-write flag.

� void spill (void)

spill register if needed.

� void fill (void)

fill register if needed.

Page 101:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.37. IATO::RSE::STATE CLASS REFERENCE 91

0.37.1 Detailed Description

the rse state.

The documentation for this class was generated from the following file:

� Rse.hpp

Page 102:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

92

0.38 iato::Segment Class Reference

The Segment (p. 92) class is an implementation of the memory core interface. The segmentis defined as an array of bytes that can be accessed with a particular address. A base is usedto offset the memory address.

#include � Segment.hpp �

Inherits iato::Memory.

Public Methods

� Segment (void)

create an empty segment.

� Segment (const t long size)

create a new segment instance by sizeParameters:

size the segment size.

��� Segment (void)

destroy this segment.

� void reset (void)

reset this segment.

� virtual t long getsize (void) constReturns:

the segment size.

� virtual void setbase (const t octa addr)

set the segment base addressParameters:

addr the base segment address.

� virtual t octa getbase (void) constReturns:

the base address.

� virtual void setdata (const long blen, t byte � buf)

initialize the segment data by copyParameters:

blen the buffer lengthbuf the buffer to set.

� virtual void mapdata (const long blen, t byte � buf)

initialize the segment data by installParameters:

blen the buffer lengthbuf the buffer to set.

� bool isvalid (const t octa addr) const

Page 103:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.38. IATO::SEGMENT CLASS REFERENCE 93

Returns:true if the address is valid.

� t byte readbyte (const t octa addr) const

read a byte from this segmentParameters:

addr the address to read.

� void writebyte (const t octa addr, const t byte byte)

write a byte at a certain addressParameters:

addr the address to write the bytebyte the byte to write.

Protected Attributes

� t long d size

the segment size.

� t byte � p data

the segment array.

� t octa d base

the base address.

0.38.1 Detailed Description

The Segment (p. 92) class is an implementation of the memory core interface. The segmentis defined as an array of bytes that can be accessed with a particular address. A base is usedto offset the memory address.

The documentation for this class was generated from the following file:

� Segment.hpp

Page 104:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

94

0.39 iato::Stat Class Reference

The Stat (p. 94) class is a collection class that can be used to collect various isa statisticsand even more. The class operates by filling various information like the program name,its size and then the instruction beeing executed. The class updates its information on thefly, so at the end, all data are available.

#include � Stat.hpp �

Public Methods

� Stat (void)

create a default stat collection.

� virtual � Stat (void)

destroy this stat object.

� virtual void reset (void)

reset this stat object.

� virtual void setflg (const bool bflg, const bool iflg, const bool nflg)

set report selection flagsParameters:

bflg the bundle flagiflg the instruction flagnflg the stop flag.

� virtual void marksc (void)

mark a simulation cycle.

� virtual void markes (void)

mark the end of the simulation.

� virtual void markbp (const bool bflg)

mark the branch prediction statm bflg the successfull branch

prediction.

� virtual void markpp (const bool pflg)

mark the predicate prediction statm pflg the successfull predicate

prediction.

� virtual void addbndl (const Bundle &bndl)

add a new bundle for stat collectionParameters:

bndl the bundle to add.

� virtual void addinst (const Instr &inst)

add an instruction for stat collectionParameters:

inst the instruction to add.

Page 105:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.39. IATO::STAT CLASS REFERENCE 95

� virtual void addinst (const Instr &inst, const bool cnlf, const bool rsch)

add an instruction for stat collectionParameters:

inst the instruction to addcnlf the cancel flagrsch the reschedule flag.

� virtual t long getnnop (void) constReturns:

the number of nop instructions.

� virtual void printb (void) const

print the bundle information.

� virtual void printi (void) const

print the instruction information.

� virtual void printn (void) const

print the nop information.

� virtual void summary (void) const

print the stat summary.

� virtual void print (void) const

print a stat report.

Protected Attributes

� t long d stim

collection start time.

� t long d etim

collection end time.

� t long d ncyc

total number of cycles.

� t long d nbnd

total number of bundles.

� t long d nins

total number of instructions.

� t long d nprd

total number of predicated instruction.

� t long d nbpd

number of predicated non branch instruction.

Page 106:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

96

� t long d ncan

total number of cancel instruction.

� t long d nbcn

total number of cancel non branch instruction.

� t long d nrsh

total number of rescheduled instructions.

� t long d npbr

number of predicted branches.

� t long d npbs

number of successfull branch prediction.

� t long d nppr

number of predicted predicates.

� t long d npps

number of successfull predicate prediction.

� t long d bndl [Bundle::BN MAXTPL]

the bunble distribution array.

� t long d inst [OPCODE MAX]

the instruction distribution array.

� bool d bflg

the bundle flag.

� bool d iflg

the instruction flag.

� bool d nflg

the nop flag.

0.39.1 Detailed Description

The Stat (p. 94) class is a collection class that can be used to collect various isa statisticsand even more. The class operates by filling various information like the program name,its size and then the instruction beeing executed. The class updates its information on thefly, so at the end, all data are available.

The documentation for this class was generated from the following file:

� Stat.hpp

Page 107:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.40. IATO::T HUGE CLASS REFERENCE 97

0.40 iato::t huge Class Reference

The t huge (p. 97) class is the implementation of a 128 bits integer representation. Sincethat type is not necessarely available in almost all target machine, it has to be emulated.This class is a minimal class that is supposed to be used internally, to perform some precisecomputation. Tyically, it is used to support the xmpy and xma instructions. The class canbe constructed with normal octa value or with two octa value to full define it. the lowestand highest representation can be obtained with the ’getlow’ and ’gethigh’ methods.

#include � Huge.hpp �

Public Methods

� t huge (void)

create a default huge number.

� t huge (const t octa value)

create a huge number with an octaParameters:

value the value to use.

� t huge (const t octa hip, const t octa lop)

create a huge number with an two octaParameters:

hip the high part to assignlop the low part to assign.

� t huge (const t huge &that)

copy construct a huge with a hugeParameters:

that the huge value to copy.

� t huge & operator= (const t octa value)

assign an octa value to this hugeParameters:

value the value to assign.

� t huge & operator= (const t huge &that)

assign a huge to this oneParameters:

that the huge to assign.

� t huge operator+ (const t huge &x) const

add one huge with another oneParameters:

x the huge operand.

� t huge operator � (const t huge &x) const

multiply one huge with another oneParameters:

x the huge operand.

Page 108:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

98

� t huge operator � � (const t octa shc) const

shift right one hugeParameters:

shc the shift count value.

� void sethigh (const t octa value)

set high 64 bits of a hugeParameters:

value the high part value.

� t octa getlow (void) constReturns:

the lowest part of this huge number.

� t octa gethigh (void) constReturns:

the highest part of this huge number.

Static Public Attributes

� const long HUGE SIZE = 16

the huge size.

0.40.1 Detailed Description

The t huge (p. 97) class is the implementation of a 128 bits integer representation. Sincethat type is not necessarely available in almost all target machine, it has to be emulated.This class is a minimal class that is supposed to be used internally, to perform some precisecomputation. Tyically, it is used to support the xmpy and xma instructions. The class canbe constructed with normal octa value or with two octa value to full define it. the lowestand highest representation can be obtained with the ’getlow’ and ’gethigh’ methods.

The documentation for this class was generated from the following file:

� Huge.hpp

Page 109:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.41. IATO::T REAL CLASS REFERENCE 99

0.41 iato::t real Class Reference

The t real (p. 99) class is the implementation of floating point representations. Two rep-resentations are used : One is the IA64 ISA representation, the other is the machine longdouble representation. Methods to cast from one representation to another are menber ofthe class.

#include � Real.hpp �

Public Types

� enum t sgfdp

the significand precision.

� enum t expr

the exponent range.

Public Methods

� t real (void)

create a default real with a quiet nan value.

� t real (const long double value)

create a real with a machine valueParameters:

value the value to use.

� t real (const t real &that)

copy construct a real with a realParameters:

that the real to copy.

� t real & operator= (const long double value)

assign a machine value to this realParameters:

value the value to assign.

� t real & operator= (const t real &that)

assign a real to this oneParameters:

that the real to assign.

� t real operator+ (const t real &x) const

add one real with another oneParameters:

x the real operand.

� t real & operator+= (const t real &that)

add this real with another one

Page 110:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

100

Parameters:that the real to add.

� t real operator- (const t real &x) const

substract one real with another oneParameters:

x the real operand to sub.

� t real & operator-= (const t real &that)

substract this real with another oneParameters:

that the real to substract.

� t real operator � (const t real &x) const

multiply one real with another oneParameters:

x the real operand.

� t real & operator � = (const t real &x)

multiply this real with another oneParameters:

x the real to multiply with.

� t real operator/ (const t real &x) const

divide one real with another oneParameters:

x the real operand.

� t real & operator/= (const t real &x)

divide this real with another oneParameters:

x the real to divide with.

� bool operator== (const long double value) const

compare a real with a machine value; equal operatorParameters:

value the value to compare.

� bool operator== (const t real value) const

compare a real with another one; equal operatorParameters:

value the real to compare.

� bool operator � (const t real value) const

compare a real with another one; less than operatorParameters:

value the real to compare.

� bool operator � = (const t real value) const

compare a real with another one; less than or equal operatorParameters:

value the real to compare.

Page 111:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.41. IATO::T REAL CLASS REFERENCE 101

� bool operator � (const t real value) const

compare a real with another one; greater than operatorParameters:

value the real to compare.

� bool operator � = (const t real value) const

compare a real with another one; greater than or equal operatorParameters:

value the real to compare.

� operator long double (void) constReturns:

a machine value representation.

� t real getabs (void) constReturns:

the absolute value.

� string repr (void) constReturns:

a raw representation of that real.

� void getbval (t byte � buf) const

get the ia byte representationParameters:

buf the destination buffer.

� void setnat (void)

set the real value to nat.

� void setpinf (void)

set the real value to positive infinity.

� void setninf (void)

set the real value to negative infinity.

� void setnanindefinite (void)

set the real to quiet nan indefinite.

� bool isnan (void) constReturns:

true if the number is nan.

� bool ispsz (void) constReturns:

true if the number is psz.

� bool isnat (void) constReturns:

true if the number is nat.

� bool ispinf (void) const

Page 112:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

102

Returns:true if the number if positive infinity.

� bool isninf (void) constReturns:

true if the number if negative infinity.

� bool isinf (void) constReturns:

true if the number if positive or negative infinity.

� bool isfinite (void) constReturns:

true if the number is finite.

� bool isint (void) constReturns:

true if the number is an integer.

� bool isunorm (void) constReturns:

true if the number is unnormal.

� bool isnorm (void) constReturns:

true if the number is normal.

� bool unordered (const t real value) constReturns:

true if the reals are unordered.

� void normalize (void)

normalize this real.

� bool getsign (void) constReturns:

the ia representation sign value.

� t quad getexp (void) constReturns:

the ia representation exponent value.

� t octa getsgfd (void) constReturns:

the ia representation significand value.

� void setsign (const bool sign)

set the sign fieldParameters:

sign the sign value.

� void setexp (const t quad exp)

set the exponent field

Page 113:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.41. IATO::T REAL CLASS REFERENCE 103

Parameters:exp the exponent value.

� void setsgfd (const t octa sgfd)

set the significand fieldParameters:

sgfd the significand value.

� void setinteger (const t octa value)

set the ia representation with an octa valueParameters:

value the octa value to use.

� void singleld (const t byte � buf)

single precision memory to floating-point register data translationParameters:

buf the 4 bytes single precision source buffer,.

� void doubleld (const t byte � buf)

double precision memory to floating-point register data translationParameters:

buf the 8 bytes double precision source buffer,.

� void extendedld (const t byte � buf)

double extended precision memory to floating-point register dataParameters:

buf the 10 bytes double precision source buffer,.

� void integerld (const t byte � buf)

integer memory to floating-point register data translationParameters:

buf the 8 bytes double precision source buffer,.

� void fill (const t byte � buf)

fill floating-point register data translation.Parameters:

buf the 16 bytes double precision source buffer,.

� void singlest (t byte � dst) const

floating-point register to single data memory translationParameters:

dst the 4 bytes memory to store in.

� void doublest (t byte � dst) const

floating-point register to double data memory translationParameters:

dst the 8 bytes memory to store in.

� void extendedst (t byte � dst) const

floating-point register to double extended data memory translationParameters:

dst the 10 bytes memory to store in.

Page 114:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

104

� void integerst (t byte � dst) const

floating-point register to integer data memory translationParameters:

dst the 8 bytes memory to store in.

� void spill (t byte � dst) const

floating-point register to data memory translationParameters:

dst the 16 bytes memory to store in.

� t real rcpa (void) constReturns:

the ieee reciprocal.

� t real rsqrt (void) constReturns:

the ieee reciprocal square root approximation.

� void convert (const t sgfdp sp, const t expr er, const t byte rc)

convert the infinite precision value into the selected modelParameters:

sp the significand precisioner the exponent rangerc the rounding control mode.

Static Public Attributes

� const long TR IASZ = 11

the ia representation size.

� const long TR SISZ = 4

the single representation size.

� const long TR DOSZ = 8

the long double representation size.

� const long TR DESZ = 10

the double extended representation size.

� const long TR SFSZ = 16

the spill fill representation size.

Friends

� t real operator+ (const t real &x, const long double y)

add one real with a machine oneParameters:

x the real operandy the machine operand.

Page 115:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.41. IATO::T REAL CLASS REFERENCE 105

� t real operator- (const t real &x, const long double y)

substract one real with a machine oneParameters:

x the real operandy the machine operand.

� t real operator � (const t real &x, const long double y)

multiply one real with a machine oneParameters:

x the real operandy the machine operand.

� t real operator/ (const t real &x, const long double y)

divide one real with a machine oneParameters:

x the real operandy the machine operand.

� ostream & operator � � (ostream &s, const t real &x)Returns:

the string representation of the real.

0.41.1 Detailed Description

The t real (p. 99) class is the implementation of floating point representations. Two rep-resentations are used : One is the IA64 ISA representation, the other is the machine longdouble representation. Methods to cast from one representation to another are menber ofthe class.

The documentation for this class was generated from the following file:

� Real.hpp

Page 116:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

106

0.42 iato::Tracer Class Reference

The Tracer (p. 106) class is a cycle based trace recorder. For a given cycle the traceraccumulates records until a new trace is started. Traces are accumulated in a vector andcan be saved (in a binary form) in a file. The ’setname’ method can be used to set that filename and open it. When used, the file is opened and a header is written. When number oftraces reaches a certain threshold, the traces are saved in the file. Note that record are savedaccording to record type and name. Note also that traces are saved according to their cyclenumber.

#include � Tracer.hpp �

Public Types

� typedef vector � Record � t vrcd

record vector type.

� typedef vector � t vrcd � � t trcd

trace vector type.

Public Methods

� Tracer (void)

create a default tracer.

� Tracer (Ctx � ctx)

create a tracer with a contextParameters:

ctx the current context.

� Tracer (const bool vflg)

create a tracer with a verbose flagParameters:

vflg the verbose flag.

� virtual � Tracer (void)

destroy this tracer.

� virtual void reset (void)

reset this tracer.

� virtual void setname (const string &name)

set the tracer file name and open itParameters:

name the file name to set and open.

� virtual void addtype (Record::t rctp val)

add a record type to trace type vectorParameters:

val the record type to add.

Page 117:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.42. IATO::TRACER CLASS REFERENCE 107

� virtual void newtrace (void)

start a new trace.

� virtual void newtraces (const long count)

add several empty traces.

� virtual void add (const Record &rcd)

add a record to the current cycleParameters:

rcd the record to add.

� virtual void add (t vrcd � vrcd)

add a record vector to the tracerParameters:

vrcd the record vector to add.

� virtual void print (void) const

print the current record vector.

0.42.1 Detailed Description

The Tracer (p. 106) class is a cycle based trace recorder. For a given cycle the traceraccumulates records until a new trace is started. Traces are accumulated in a vector andcan be saved (in a binary form) in a file. The ’setname’ method can be used to set that filename and open it. When used, the file is opened and a header is written. When number oftraces reaches a certain threshold, the traces are saved in the file. Note that record are savedaccording to record type and name. Note also that traces are saved according to their cyclenumber.

The documentation for this class was generated from the following file:

� Tracer.hpp

Page 118:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

108

0.43 iato::Tracer::Reader Class Reference

the trace reader class.

#include � Tracer.hpp �

Public Methods

� Reader (const string &name)

create a new trace reader by nameParameters:

name the trace file name.

��� Reader (void)

destroy this trace reader.

� t vrcd � trcrd (void)Returns:

a new tracer record.

� Record � getrcd (void)Returns:

a new record.

� void hdinfo (void)

print header information.

� t long getbicc (void) constReturns:

the begin trace index.

� t long geteicc (void) constReturns:

the end trace index.

0.43.1 Detailed Description

the trace reader class.

The documentation for this class was generated from the following file:

� Tracer.hpp

Page 119:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.44. IATO::UMR CLASS REFERENCE 109

0.44 iato::Umr Class Reference

The Umr (p. 109) class is the user mask register. The UMR is a subset of the processorstatus register (PSR). The UMR can be modified here and later inserted into the PSR.

#include � Umr.hpp �

Public Types

� enum t field

the umr fields.

Public Methods

� Umr (void)

create a default umr.

� Umr (const t byte value)

create a umr with a valueParameters:

value the umr value to set.

� Umr (const Umr &that)

copy construct this umrParameters:

that the umr to copy.

� Umr & operator= (const Umr &that)

assign a umr to this oneParameters:

that the umr to assign.

� void reset (void)

reset this umr.

� void setumr (const t byte umr)

set the umr valueParameters:

umr the umr to set.

� t byte getumr (void) constReturns:

the resource umr.

� void setfld (t field fld, const bool val)

set the umr by field and valueParameters:

fld the umr fieldval the umr field value.

Page 120:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

110

� bool getfld (t field fld) constReturns:

the umr field.

0.44.1 Detailed Description

The Umr (p. 109) class is the user mask register. The UMR is a subset of the processorstatus register (PSR). The UMR can be modified here and later inserted into the PSR.

The documentation for this class was generated from the following file:

� Umr.hpp

Page 121:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.45. IATO::UVR CLASS REFERENCE 111

0.45 iato::Uvr Class Reference

The Uvr (p. 111) class is a simple class that defines a universal value representation. Thedefault representation is NAV (not a value. The value can be either an octa, a combinationof octa and nat bit, a boolean value or a real value.

#include � Uvr.hpp �

Public Types

� enum t uvrt

the uvr types.

Public Methods

� Uvr (void)

create a default uvr.

� Uvr (const Uvr &that)

copy construct this uvrParameters:

that the uvr to copy.

� Uvr & operator= (const Uvr &that)

assign a uvr to this oneParameters:

that the uvr to assign.

� void reset (void)

reset this uvr.

� bool isvalid (void) constReturns:

true if the uvr is valid.

� t uvrt gettype (void) constReturns:

the uvr type.

� void setbval (const bool bval)

set a boolean valueParameters:

bval the boolean value to set.

� bool getbval (void) constReturns:

the boolean value.

� void setoval (const t octa oval)

set an octa value

Page 122:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

112

Parameters:oval the octa value to set.

� t octa getoval (void) constReturns:

the octa value.

� void setdval (const t octa oval, const bool bval)

set a dual value (octa and nat bit)Parameters:

oval the octa value to setbval the nat bit to set.

� void setrval (const t real rval)

set a real valueParameters:

rval the real value to set.

� t real getrval (void) constReturns:

the real value.

0.45.1 Detailed Description

The Uvr (p. 111) class is a simple class that defines a universal value representation. Thedefault representation is NAV (not a value. The value can be either an octa, a combinationof octa and nat bit, a boolean value or a real value.

The documentation for this class was generated from the following file:

� Uvr.hpp

Page 123:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

Part II

ELF Library

113

Page 124:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference
Page 125:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.46. IATO ELF LIBRARY COMPOUND LIST 115

0.46 IATO ELF LIBRARY Compound List

Here are the classes, structs, unions and interfaces with brief descriptions:

iato::ElfArgs (The ElfArgs (p. 117) class is a special class designed to buildthe memory image of the program arguments. For a given program, acharacter block is built with the total size of the arguments. Note thatwe are using C strings, that means the trailing null character is alsoincluded. Then the block is padded to align it with a 8 bytes boundary.Note that we store also the number of arguments and we use both datato initialize the program stack. This kind of operation is heavily ABIsensitive. You have been warned ..) . . . . . . . . . . . . . . . . . . . . 117

iato::ElfBrk (The ElfBrk (p. 119) class is a specialized elf load object that main-tain a break limit for further memory allocation. Each time a new seg-ment is added the break limit is changed, as to reflect the change inmemory access. Increasing the break limit is equivalent to increase thesegment size of the containing segment. Decreasing the break limit canresult in segment removal) . . . . . . . . . . . . . . . . . . . . . . . . 119

iato::ElfBsa (The ElfBsa (p. 120) class is a simple segment that represents thebacking store area. The class is nothing more than a constructor. Thegood news is that it can be constructed from the ElfKernel (p. 129) object)120

iato::ElfChecker (The ElfChecker (p. 121) class is a special section that is de-signed to handle the special checker section. Once the section has beenread, it is possible to extract a checker object. The checker object isbuilt by scaning the section and building register check records. Oncethe checker object has been built, that section can be destroyed) . . . . . 121

iato::ElfEnvp (The ElfEnvp (p. 122) class is a special class designed to buildthe memory image of the program environment. For a given program, acharacter block is built with the total size of the environment. This classis similar to the ElfArgs (p. 117) that manages the program arguments.As part of the ABI, the environment array is placed above the arguementarray. That means that the first pointer is visible at argv[argc+1]. Onceagain, this class is ABI sensitive. You have been warned) . . . . . . . . 122

iato::ElfExec (The ElfExec (p. 123) class is a memory object that represent thevarious portions of a memory process. It is built with a breakable mem-ory, a backing store area, a stack and a mappable area. To be effectivelyconstructed, the class needs the ElfKernel (p. 129) object in order tograb the stack and backing store parameters. The breakable memorycan be added at any time) . . . . . . . . . . . . . . . . . . . . . . . . . 123

iato::ElfImage (The Elf class is a complete representation of an elf object. Atinitialization, the elf file is opened and the header is read. A determi-nation of weather the file is a relocatable file (.o) or an executable file.For a relocatable file, the linking view of the elf file is used (aka usingsection). For an executable file the executable view is used (aka seg-ments). Various methods are provided to get an idea of the file nataure.The ’isvalid’ method is particulary useful to determined the object s-tate. The ’isexec’ method tells if the elf image is an executable object.The ’getimage’ method is the prefered way to get an execuatble imagesince it prepares the complete memory representation) . . . . . . . . . 124

Page 126:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

116

iato::ElfInterp (The ElfInterp (p. 127) class is the elf interpreter. As definied bythe ABI, the interpreter is responsible to setup the memory image so thata program can be executed. The memory image setup include, amongother things, the preparation of the stack (with arguments), the got andplt setup, relocation and many other stuff. This implementation is thedefault one. It makes some assumption about the process image andmimic a standard IA64 ld.so implementation. Although this might varyfrom one implementation to another, it is unlikelly to change unless thelibc is changed dramatically. Note that in real life, the elf interpreteris part of the libc. This means that program compiled with a speciallibrary might not work. Again, this is unlikelly to happen) . . . . . . . 127

iato::ElfKernel (The ElfKernel (p. 129) class is a parameters class that is usedto represent the process image according to some kernel parameters.Such parameters include the page size, process stack definition as wellas backing store area information. The class is used to construct otherobject like the stack or the bsa) . . . . . . . . . . . . . . . . . . . . . . 129

iato::ElfLoad (The ElfLoad (p. 131) class is a specialized elf memory objectthat is built from an elf file. The class acts as an array of elf segmentsbuilt with load flag. This class is similar to the elf text section array.Note that globally, the load array has all protections enabled) . . . . . . 131

iato::ElfMap (The ElfMap (p. 132) class is a specialized elf load object thatmaintain the memory mappable interface. The full ’mmap’ system callis implemented via this class. The starting address for a memory map-pable is defined as a parameters. The memory can be mapped or un-mapped. For a memory mapping, the meory size needs to be allignedto a page size or an exception is raised) . . . . . . . . . . . . . . . . . 132

iato::ElfMemory (The ElfMemory (p. 133) is a container for other elements.The class implements the memory interface and is responsible to selectthe rigth memory block for any operation, like read or write. The classworks also with imbricated memory block, that is an elf memory canalso contain other memory block) . . . . . . . . . . . . . . . . . . . . 133

iato::ElfSection (The ElfSection (p. 135) class is a simple class that holds thedata associated with a particular elf section. The class cannot be con-structed directly. The elf section is described with a name, a size and aset of data) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

iato::ElfSection::const iterator (The const iterator (p. 136) class is a constantiterator for the section class. The iterator returns a bundle object periteration. If the iterator is not valid an invalid bundle is returned) . . . . 136

iato::ElfSegment (The ElfSegment (p. 138) class is a simple class that holdsthe data associated with a particular elf segment. The class cannot beconstructed directly. Unlike a section, a segment does not have a name.Block segment are built from the elf file, from loadable segments) . . . 138

iato::ElfStack (The ElfStack (p. 139) class is a simple segment that representsthe process stack. The stack can be initialized by default or by con-text. The ABI specifies that the stack grows towards lower address.Initially, the stack is created with a certain default size. After someelf initialization, the initialized stack pointer indicates the current stackpointer. Normally it should not be changed after this. The initializedstack pointer can be set to initialize the processor with the current s-tack pointer (sp). The stack is initialized with the read/write/executepermission) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

Page 127:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.47. IATO::ELFARGS CLASS REFERENCE 117

iato::ElfTable (The ElfTable (p. 140) class is a simple class that manages a vec-tor of strings and produces a block of characters associated with a char-acter block pointer relocated at a certain address. A typical example isthe argument string for a program which is a table of string pointers.In order to operate, the string vector must be filled with the string val-ues. The ”getargb” methods returns a character block which is paddedmodulo the abi alignement. The ”getargs” method returns the completeblock size. The ”getargv” method returns a block of pointers relocat-ed at a certain address. The ”getargc” method returns the number ofpointers (aka the number of strings) in the argument vector. Obviously,adding a string between various getxxxx calls will result in inconsistenttables) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

iato::ElfText (The ElfText (p. 142) class is a specialized elf memory object thatis built from an elf file. The class acts as an array of elf sections builtwith text section. The associated section are those that have the textassociated flag sets. Note that such section are built generally withread/execute flag only) . . . . . . . . . . . . . . . . . . . . . . . . . . 142

iato::Etx (The Etx (p. 143) class is the micro-architecture context class. Thisclass is derived from the isa context class and provides additional pa-rameters that are used the elf engine. Most of these parameters are usedto derive a correct process image) . . . . . . . . . . . . . . . . . . . . 143

0.47 iato::ElfArgs Class Reference

The ElfArgs (p. 117) class is a special class designed to build the memory image of theprogram arguments. For a given program, a character block is built with the total size ofthe arguments. Note that we are using C strings, that means the trailing null character isalso included. Then the block is padded to align it with a 8 bytes boundary. Note that westore also the number of arguments and we use both data to initialize the program stack.This kind of operation is heavily ABI sensitive. You have been warned ...

#include � ElfArgs.hpp �

Inherits iato::ElfTable.

Public Methods

� ElfArgs (const string &name)

create an argument block by nameParameters:

name the program name.

� ElfArgs (const long argc, const char � � argv)

create an argument block by argumentsParameters:

argc the number of argumentsargv the argument vector.

� ElfArgs (const string &name, const vector � string � &argv)

create an argument block by name and argumentsParameters:

name the program nameargv the program arguments.

Page 128:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

118

� string getname (void) constReturns:

the program name.

0.47.1 Detailed Description

The ElfArgs (p. 117) class is a special class designed to build the memory image of theprogram arguments. For a given program, a character block is built with the total size ofthe arguments. Note that we are using C strings, that means the trailing null character isalso included. Then the block is padded to align it with a 8 bytes boundary. Note that westore also the number of arguments and we use both data to initialize the program stack.This kind of operation is heavily ABI sensitive. You have been warned ...

The documentation for this class was generated from the following file:

� ElfArgs.hpp

Page 129:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.48. IATO::ELFBRK CLASS REFERENCE 119

0.48 iato::ElfBrk Class Reference

The ElfBrk (p. 119) class is a specialized elf load object that maintain a break limit forfurther memory allocation. Each time a new segment is added the break limit is changed,as to reflect the change in memory access. Increasing the break limit is equivalent to in-crease the segment size of the containing segment. Decreasing the break limit can result insegment removal.

#include � ElfBrk.hpp �

Inherits iato::ElfLoad.

Public Methods

� ElfBrk (void)

create a new breakable memory.

� ElfBrk (ElfKernel � ekp)

create a new breakable memory by parametersParameters:

ekp the elf kernel parameters.

� void addseg (ElfSegment � seg)

add a segment to this memoryParameters:

seg the segment to add.

� void setbrkta (const t octa addr)

change the break limit addressParameters:

addr the break limit to change.

� t octa getbrkta (void) constReturns:

the break limit address.

0.48.1 Detailed Description

The ElfBrk (p. 119) class is a specialized elf load object that maintain a break limit forfurther memory allocation. Each time a new segment is added the break limit is changed,as to reflect the change in memory access. Increasing the break limit is equivalent to in-crease the segment size of the containing segment. Decreasing the break limit can result insegment removal.

The documentation for this class was generated from the following file:

� ElfBrk.hpp

Page 130:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

120

0.49 iato::ElfBsa Class Reference

The ElfBsa (p. 120) class is a simple segment that represents the backing store area. Theclass is nothing more than a constructor. The good news is that it can be constructed fromthe ElfKernel (p. 129) object.

#include � ElfBsa.hpp �

Public Methods

� ElfBsa (void)

create a new default bsa.

� ElfBsa (ElfKernel � ekp)

create a new bsa by contextParameters:

ekp the elf kernel parameters.

0.49.1 Detailed Description

The ElfBsa (p. 120) class is a simple segment that represents the backing store area. Theclass is nothing more than a constructor. The good news is that it can be constructed fromthe ElfKernel (p. 129) object.

The documentation for this class was generated from the following file:

� ElfBsa.hpp

Page 131:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.50. IATO::ELFCHECKER CLASS REFERENCE 121

0.50 iato::ElfChecker Class Reference

The ElfChecker (p. 121) class is a special section that is designed to handle the specialchecker section. Once the section has been read, it is possible to extract a checker object.The checker object is built by scaning the section and building register check records. Oncethe checker object has been built, that section can be destroyed.

#include � ElfChecker.hpp �

Inherits iato::ElfSection.

Public Methods

� Checker � getchecker (void) constReturns:

the checker object.

0.50.1 Detailed Description

The ElfChecker (p. 121) class is a special section that is designed to handle the specialchecker section. Once the section has been read, it is possible to extract a checker object.The checker object is built by scaning the section and building register check records. Oncethe checker object has been built, that section can be destroyed.

The documentation for this class was generated from the following file:

� ElfChecker.hpp

Page 132:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

122

0.51 iato::ElfEnvp Class Reference

The ElfEnvp (p. 122) class is a special class designed to build the memory image of theprogram environment. For a given program, a character block is built with the total sizeof the environment. This class is similar to the ElfArgs (p. 117) that manages the programarguments. As part of the ABI, the environment array is placed above the arguement array.That means that the first pointer is visible at argv[argc+1]. Once again, this class is ABIsensitive. You have been warned.

#include � ElfEnvp.hpp �

Inherits iato::ElfTable.

Public Methods

� ElfEnvp (void)

create a default elf environment.

� ElfEnvp (const long argc, const char � � argv)

create an argument blockParameters:

argc the number of argumentsargv the argument vector.

0.51.1 Detailed Description

The ElfEnvp (p. 122) class is a special class designed to build the memory image of theprogram environment. For a given program, a character block is built with the total sizeof the environment. This class is similar to the ElfArgs (p. 117) that manages the programarguments. As part of the ABI, the environment array is placed above the arguement array.That means that the first pointer is visible at argv[argc+1]. Once again, this class is ABIsensitive. You have been warned.

The documentation for this class was generated from the following file:

� ElfEnvp.hpp

Page 133:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.52. IATO::ELFEXEC CLASS REFERENCE 123

0.52 iato::ElfExec Class Reference

The ElfExec (p. 123) class is a memory object that represent the various portions of amemory process. It is built with a breakable memory, a backing store area, a stack and amappable area. To be effectively constructed, the class needs the ElfKernel (p. 129) objectin order to grab the stack and backing store parameters. The breakable memory can beadded at any time.

#include � ElfExec.hpp �

Inherits iato::ElfMemory.

Public Methods

� ElfExec (ElfKernel � ekp)

create an elf executable memoryParameters:

ekp the elf kernel parameters.

� void setbrkm (ElfBrk � brk)

set the breakable memoryParameters:

brk the breakable memory to set.

� ElfBrk � getbrkm (void) constReturns:

the elf breakable memory.

� ElfStack � getstkm (void) constReturns:

the elf stack memory.

� ElfBsa � getbsam (void) constReturns:

the elf bsa memory.

� ElfMap � getmapm (void) constReturns:

the elf mappable memory.

0.52.1 Detailed Description

The ElfExec (p. 123) class is a memory object that represent the various portions of amemory process. It is built with a breakable memory, a backing store area, a stack and amappable area. To be effectively constructed, the class needs the ElfKernel (p. 129) objectin order to grab the stack and backing store parameters. The breakable memory can beadded at any time.

The documentation for this class was generated from the following file:

� ElfExec.hpp

Page 134:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

124

0.53 iato::ElfImage Class Reference

The Elf class is a complete representation of an elf object. At initialization, the elf fileis opened and the header is read. A determination of weather the file is a relocatable file(.o) or an executable file. For a relocatable file, the linking view of the elf file is used(aka using section). For an executable file the executable view is used (aka segments).Various methods are provided to get an idea of the file nataure. The ’isvalid’ method isparticulary useful to determined the object state. The ’isexec’ method tells if the elf imageis an executable object. The ’getimage’ method is the prefered way to get an execuatbleimage since it prepares the complete memory representation.

#include � ElfImage.hpp �

Public Methods

� ElfImage (const string &name)

create a new elf image by nameParameters:

name the file name.

� ElfImage (Etx � etx, const string &name)

create a new elf image by context and nameParameters:

etx the elf contextname the file name.

� ElfImage (Etx � etx, const string &name, const vector � string � &argv)

create a new elf image by context, name and argumentsParameters:

etx the elf contextname the program nameargv the program arguments.

� ElfImage (Etx � etx, const long argc, const char � � argv)

create a new elf image by context and argumentsParameters:

etx the elf contextargc the number of argumentsargv the argument vector.

��� ElfImage (void)

destroy this elf image.

� void reset (void)

reset this elf image.

� string getname (void) constReturns:

the elf image name.

� string repr (void) constReturns:

a string representation.

Page 135:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.53. IATO::ELFIMAGE CLASS REFERENCE 125

� bool isvalid (void) constReturns:

true if the elf image is valid.

� bool isexec (void) constReturns:

true if the elf image is an executable.

� bool isstatic (void) constReturns:

true if the elf image is static.

� bool iscls64 (void) constReturns:

true if the image is of class 64.

� bool isia64 (void) constReturns:

true if the image is an ia64 image.

� bool ismsb (void) constReturns:

true if the image has msb encoding.

� long getphnum (void) constReturns:

the number of program headers.

� long getshnum (void) constReturns:

the number of section headers.

� t octa getentry (void) constReturns:

the elf entry point.

� string getinterpname (void) constReturns:

the elf interpreter name.

� ElfInterp � getinterp (void) constReturns:

the associated elf interpreter.

� ElfSection � getscn (const string &name) constReturns:

a section by name.

� ElfText � gettxt (void) constReturns:

all elf text sections.

� ElfLoad � getload (void) const

Page 136:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

126

Returns:all elf load segments.

� ElfBrk � getbrkm (void) constReturns:

the elf breakable memory.

� ElfExec � getexec (void) constReturns:

the elf executable image.

� ElfExec � getimage (void) constReturns:

an elf executable image or throw an exception.

� Checker � getchecker (void) constReturns:

a checker object if it exists.

0.53.1 Detailed Description

The Elf class is a complete representation of an elf object. At initialization, the elf fileis opened and the header is read. A determination of weather the file is a relocatable file(.o) or an executable file. For a relocatable file, the linking view of the elf file is used(aka using section). For an executable file the executable view is used (aka segments).Various methods are provided to get an idea of the file nataure. The ’isvalid’ method isparticulary useful to determined the object state. The ’isexec’ method tells if the elf imageis an executable object. The ’getimage’ method is the prefered way to get an execuatbleimage since it prepares the complete memory representation.

The documentation for this class was generated from the following file:

� ElfImage.hpp

Page 137:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.54. IATO::ELFINTERP CLASS REFERENCE 127

0.54 iato::ElfInterp Class Reference

The ElfInterp (p. 127) class is the elf interpreter. As definied by the ABI, the interpreteris responsible to setup the memory image so that a program can be executed. The memoryimage setup include, among other things, the preparation of the stack (with arguments), thegot and plt setup, relocation and many other stuff. This implementation is the default one.It makes some assumption about the process image and mimic a standard IA64 ld.so im-plementation. Although this might vary from one implementation to another, it is unlikellyto change unless the libc is changed dramatically. Note that in real life, the elf interpreter ispart of the libc. This means that program compiled with a special library might not work.Again, this is unlikelly to happen.

#include � ElfInterp.hpp �

Public Methods

� ElfInterp (void)

create a default interpreter.

� ElfInterp (const string &name)

create an interpreter by nameParameters:

name the emulated name.

� virtual � ElfInterp (void)

destroy this interpreter.

� virtual void bind (ElfKernel � ekp)

bind the kernel parametersParameters:

ekp the elf kernel parameters.

� virtual void bind (ElfArgs � args, ElfEnvp � envp, ElfStack � stk) const

bind the arguments in a memoryParameters:

args the program argumentenvp the program environmentstk the elf stack.

Static Public Methods

� bool isvalid (const string &interp)Returns:

true if the interpreter is supported.

0.54.1 Detailed Description

The ElfInterp (p. 127) class is the elf interpreter. As definied by the ABI, the interpreteris responsible to setup the memory image so that a program can be executed. The memory

Page 138:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

128

image setup include, among other things, the preparation of the stack (with arguments), thegot and plt setup, relocation and many other stuff. This implementation is the default one.It makes some assumption about the process image and mimic a standard IA64 ld.so im-plementation. Although this might vary from one implementation to another, it is unlikellyto change unless the libc is changed dramatically. Note that in real life, the elf interpreter ispart of the libc. This means that program compiled with a special library might not work.Again, this is unlikelly to happen.

The documentation for this class was generated from the following file:

� ElfInterp.hpp

Page 139:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.55. IATO::ELFKERNEL CLASS REFERENCE 129

0.55 iato::ElfKernel Class Reference

The ElfKernel (p. 129) class is a parameters class that is used to represent the processimage according to some kernel parameters. Such parameters include the page size, processstack definition as well as backing store area information. The class is used to constructother object like the stack or the bsa.

#include � ElfKernel.hpp �

Public Methods

� ElfKernel (void)

create a default elf kernel parameters.

� ElfKernel (Etx � etx)

create a kernel parameters by contextParameters:

etx the elf context.

� void setmode (const bool mode)

set the endian modeParameters:

mode the mode to set.

� bool getmode (void) constReturns:

the endian mode.

� t octa getmapb (void) constReturns:

the mappable base address.

� t octa getpgsz (void) constReturns:

the page size.

� t octa getstkva (void) constReturns:

the top stack address.

� long getstksz (void) constReturns:

the stack size.

� t octa getbsava (void) constReturns:

the bsa base address.

� long getbsasz (void) constReturns:

the bsa size.

� long getclktk (void) const

Page 140:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

130

Returns:the times clock ticks.

0.55.1 Detailed Description

The ElfKernel (p. 129) class is a parameters class that is used to represent the processimage according to some kernel parameters. Such parameters include the page size, processstack definition as well as backing store area information. The class is used to constructother object like the stack or the bsa.

The documentation for this class was generated from the following file:

� ElfKernel.hpp

Page 141:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.56. IATO::ELFLOAD CLASS REFERENCE 131

0.56 iato::ElfLoad Class Reference

The ElfLoad (p. 131) class is a specialized elf memory object that is built from an elf file.The class acts as an array of elf segments built with load flag. This class is similar to theelf text section array. Note that globally, the load array has all protections enabled.

#include � ElfLoad.hpp �

Inherits iato::ElfMemory.

Inherited by iato::ElfBrk, and iato::ElfMap.

Public Methods

� ElfLoad (void)

create a default load memory.

� void add (Memory � mem)

add a memory only if it is an elf segmentParameters:

mem the memory to add.

� virtual void addseg (ElfSegment � seg)

add a segment to this memoryParameters:

seg the segment to add.

� ElfSegment � getseg (const long index) constReturns:

a segment by index.

0.56.1 Detailed Description

The ElfLoad (p. 131) class is a specialized elf memory object that is built from an elf file.The class acts as an array of elf segments built with load flag. This class is similar to theelf text section array. Note that globally, the load array has all protections enabled.

The documentation for this class was generated from the following file:

� ElfLoad.hpp

Page 142:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

132

0.57 iato::ElfMap Class Reference

The ElfMap (p. 132) class is a specialized elf load object that maintain the memory map-pable interface. The full ’mmap’ system call is implemented via this class. The startingaddress for a memory mappable is defined as a parameters. The memory can be mapped orunmapped. For a memory mapping, the meory size needs to be alligned to a page size oran exception is raised.

#include � ElfMap.hpp �

Inherits iato::ElfLoad.

Public Methods

� ElfMap (void)

create a new mappable memory.

� ElfMap (ElfKernel � ekp)

create a new mappable memory by parametersParameters:

ekp the elf kernel parameters.

� t octa findtop (void) constReturns:

the top available address.

� t octa mmap (const t long size, const t byte prot, ElfSegment::t stype type)

map some memory anonymously with some protectionParameters:

size the memory size to mapprot the memory protection to usetype the memory type to map.

� bool munmap (const t octa addr, const t long size)

unmap some memory at a certan address and sizeParameters:

addr the base memory addresssize the memory size to unmap.

0.57.1 Detailed Description

The ElfMap (p. 132) class is a specialized elf load object that maintain the memory map-pable interface. The full ’mmap’ system call is implemented via this class. The startingaddress for a memory mappable is defined as a parameters. The memory can be mapped orunmapped. For a memory mapping, the meory size needs to be alligned to a page size oran exception is raised.

The documentation for this class was generated from the following file:

� ElfMap.hpp

Page 143:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.58. IATO::ELFMEMORY CLASS REFERENCE 133

0.58 iato::ElfMemory Class Reference

The ElfMemory (p. 133) is a container for other elements. The class implements the mem-ory interface and is responsible to select the rigth memory block for any operation, likeread or write. The class works also with imbricated memory block, that is an elf memorycan also contain other memory block.

#include � ElfMemory.hpp �

Inherited by iato::ElfExec, iato::ElfLoad, and iato::ElfText.

Public Methods

� ElfMemory (void)

create a default elf memory.

��� ElfMemory (void)

destroy this elf memory.

� void reset (void)

reset this elf memory.

� bool isvalid (const t octa addr) constReturns:

true if the address is valid.

� t byte readbyte (const t octa addr) const

read a byte from this memoryParameters:

addr the address to read.

� t byte readexec (const t octa addr) const

read a byte from this memory and check for executeParameters:

addr the address to read.

� void writebyte (const t octa addr, const t byte byte)

write a byte at a certain addressParameters:

addr the address to write the bytebyte the byte to write.

� virtual long length (void) constReturns:

the number of memories.

� virtual long find (const t octa addr) constReturns:

a memory index by address.

� virtual void add (Memory � mem)

add a memory to this memory array

Page 144:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

134

Parameters:mem the memory to add.

� virtual Memory � getmem (const long index) constReturns:

a memory by index.

� virtual bool remove (const long index)

remove a memory by index.

Protected Attributes

� vector � Memory � � d vmem

the vector of memory.

0.58.1 Detailed Description

The ElfMemory (p. 133) is a container for other elements. The class implements the mem-ory interface and is responsible to select the rigth memory block for any operation, likeread or write. The class works also with imbricated memory block, that is an elf memorycan also contain other memory block.

The documentation for this class was generated from the following file:

� ElfMemory.hpp

Page 145:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.59. IATO::ELFSECTION CLASS REFERENCE 135

0.59 iato::ElfSection Class Reference

The ElfSection (p. 135) class is a simple class that holds the data associated with a partic-ular elf section. The class cannot be constructed directly. The elf section is described witha name, a size and a set of data.

#include � ElfSection.hpp �

Inherited by iato::ElfChecker.

Public Methods

� ElfSection (const string &name, void � scn, const bool mode)

create a new elf section by name and elf sectionParameters:

name the section namescn the elf section descriptormode the endian mode.

� string getname (void) constReturns:

the section name.

� const iterator begin (void) constReturns:

a bundle iterator pointing at the beginning of the section.

� const iterator end (void) constReturns:

a bundle iterator pointing at the end of the section.

0.59.1 Detailed Description

The ElfSection (p. 135) class is a simple class that holds the data associated with a partic-ular elf section. The class cannot be constructed directly. The elf section is described witha name, a size and a set of data.

The documentation for this class was generated from the following file:

� ElfSection.hpp

Page 146:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

136

0.60 iato::ElfSection::const iterator Class Reference

the const iterator (p. 136) class is a constant iterator for the section class. The iteratorreturns a bundle object per iteration. If the iterator is not valid an invalid bundle is returned.

#include � ElfSection.hpp �

Public Methods

� const iterator (void)

create a default iterator.

� const iterator (const ElfSection � scn, const t octa addr)

create an iterator with a section and addressParameters:

scn the section to iterateaddr the address to start.

� const iterator (const const iterator &that)

copy construct this iteratorParameters:

that the iterator to copy.

� const iterator & operator= (const const iterator &it)

assign an iterator to this oneParameters:

it the iterator to assign.

� const iterator & operator++ (void)

move one step the iterator (prefix).

� const iterator operator++ (int)

move one step the iterator (postfix).

� bool operator== (const const iterator &it) constReturns:

true if two iterators are equal.

� bool operator � (const const iterator &it) constReturns:

true if two iterators are less.

� bool operator � = (const const iterator &it) constReturns:

true if two iterators are less equal.

� bool operator � (const const iterator &it) constReturns:

true if two iterators are greater.

� bool operator � = (const const iterator &it) constReturns:

true if two iterators are greater equal.

Page 147:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.60. IATO::ELFSECTION::CONST ITERATOR CLASS REFERENCE 137

� Bundle operator � (void) const

get a bundle from this iterator.

� t octa getip (void) constReturns:

the current iterator ip.

0.60.1 Detailed Description

the const iterator (p. 136) class is a constant iterator for the section class. The iteratorreturns a bundle object per iteration. If the iterator is not valid an invalid bundle is returned.

The documentation for this class was generated from the following file:

� ElfSection.hpp

Page 148:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

138

0.61 iato::ElfSegment Class Reference

The ElfSegment (p. 138) class is a simple class that holds the data associated with a par-ticular elf segment. The class cannot be constructed directly. Unlike a section, a segmentdoes not have a name. Block segment are built from the elf file, from loadable segments.

#include � ElfSegment.hpp �

Public Types

� enum t stype

the segment type.

Public Methods

� ElfSegment (const t long size, const t octa base)

create an elf segment by base and sizeParameters:

size the segment sizebase the base address.

� ElfSegment (const t long size, const t octa base, t stype type)

create an elf segment by base and size and typeParameters:

size the segment sizebase the base addresstype the segment type.

� ElfSegment (const int fid, void � seg, const bool mode)

create a new elf by segment and modeParameters:

fid the elf file idseg the elf segment headermode the endian mode.

0.61.1 Detailed Description

The ElfSegment (p. 138) class is a simple class that holds the data associated with a par-ticular elf segment. The class cannot be constructed directly. Unlike a section, a segmentdoes not have a name. Block segment are built from the elf file, from loadable segments.

The documentation for this class was generated from the following file:

� ElfSegment.hpp

Page 149:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.62. IATO::ELFSTACK CLASS REFERENCE 139

0.62 iato::ElfStack Class Reference

The ElfStack (p. 139) class is a simple segment that represents the process stack. The s-tack can be initialized by default or by context. The ABI specifies that the stack growstowards lower address. Initially, the stack is created with a certain default size. Aftersome elf initialization, the initialized stack pointer indicates the current stack pointer. Nor-mally it should not be changed after this. The initialized stack pointer can be set to ini-tialize the processor with the current stack pointer (sp). The stack is initialized with theread/write/execute permission.

#include � ElfStack.hpp �

Public Methods

� ElfStack (void)

create a new default stack.

� ElfStack (ElfKernel � ekp)

create a new stack by parametersParameters:

ekp the elf kernel parameters.

� void setstkva (const t octa addr)

set the elf stack address.

� t octa getstkva (void) constReturns:

the elf stack address.

� void pargs (void) const

print the stack arguments after initialization.

0.62.1 Detailed Description

The ElfStack (p. 139) class is a simple segment that represents the process stack. The s-tack can be initialized by default or by context. The ABI specifies that the stack growstowards lower address. Initially, the stack is created with a certain default size. Aftersome elf initialization, the initialized stack pointer indicates the current stack pointer. Nor-mally it should not be changed after this. The initialized stack pointer can be set to ini-tialize the processor with the current stack pointer (sp). The stack is initialized with theread/write/execute permission.

The documentation for this class was generated from the following file:

� ElfStack.hpp

Page 150:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

140

0.63 iato::ElfTable Class Reference

The ElfTable (p. 140) class is a simple class that manages a vector of strings and producesa block of characters associated with a character block pointer relocated at a certain ad-dress. A typical example is the argument string for a program which is a table of stringpointers. In order to operate, the string vector must be filled with the string values. The”getargb” methods returns a character block which is padded modulo the abi alignement.The ”getargs” method returns the complete block size. The ”getargv” method returns ablock of pointers relocated at a certain address. The ”getargc” method returns the numberof pointers (aka the number of strings) in the argument vector. Obviously, adding a stringbetween various getxxxx calls will result in inconsistent tables.

#include � ElfTable.hpp �

Inherited by iato::ElfArgs, and iato::ElfEnvp.

Public Methods

� ElfTable (void)

create an empty character table.

� virtual � ElfTable (void)

destroy this character table.

� virtual void reset (void)

reset this argument table.

� void add (const string &s)

add a new string to the tableParameters:

s the string to add.

� virtual long getargc (void) const

Returns:the number of arguments.

� virtual long getargs (void) const

Returns:the argument block size.

� virtual t byte � getargb (void) const

Returns:the argument block array.

� virtual t octa � getargv (const t octa addr) const

relocate the argument vector at a certain addressParameters:

addr the base address to relocate.

Page 151:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.63. IATO::ELFTABLE CLASS REFERENCE 141

0.63.1 Detailed Description

The ElfTable (p. 140) class is a simple class that manages a vector of strings and producesa block of characters associated with a character block pointer relocated at a certain ad-dress. A typical example is the argument string for a program which is a table of stringpointers. In order to operate, the string vector must be filled with the string values. The”getargb” methods returns a character block which is padded modulo the abi alignement.The ”getargs” method returns the complete block size. The ”getargv” method returns ablock of pointers relocated at a certain address. The ”getargc” method returns the numberof pointers (aka the number of strings) in the argument vector. Obviously, adding a stringbetween various getxxxx calls will result in inconsistent tables.

The documentation for this class was generated from the following file:

� ElfTable.hpp

Page 152:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

142

0.64 iato::ElfText Class Reference

The ElfText (p. 142) class is a specialized elf memory object that is built from an elf file.The class acts as an array of elf sections built with text section. The associated section arethose that have the text associated flag sets. Note that such section are built generally withread/execute flag only.

#include � ElfText.hpp �

Inherits iato::ElfMemory.

Public Methods

� ElfText (void)

create a default memory.

� void add (Memory � mem)

add a memory only if is an elf sectionParameters:

mem the memory to add.

� virtual void addscn (ElfSection � scn)

add a section to this memoryParameters:

scn the section to add.

� ElfSection � getscn (const long index) constReturns:

a section by index.

0.64.1 Detailed Description

The ElfText (p. 142) class is a specialized elf memory object that is built from an elf file.The class acts as an array of elf sections built with text section. The associated section arethose that have the text associated flag sets. Note that such section are built generally withread/execute flag only.

The documentation for this class was generated from the following file:

� ElfText.hpp

Page 153:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.65. IATO::ETX CLASS REFERENCE 143

0.65 iato::Etx Class Reference

The Etx (p. 143) class is the micro-architecture context class. This class is derived fromthe isa context class and provides additional parameters that are used the elf engine. Mostof these parameters are used to derive a correct process image.

#include � Etx.hpp �

Public Methods

� Etx (void)

create a new context.

� void reset (void)

reset this context.

� void update (const t arch arch)

update this context with a particular architecture.

0.65.1 Detailed Description

The Etx (p. 143) class is the micro-architecture context class. This class is derived fromthe isa context class and provides additional parameters that are used the elf engine. Mostof these parameters are used to derive a correct process image.

The documentation for this class was generated from the following file:

� Etx.hpp

Page 154:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

144

Page 155:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

Part III

Kernel Library

145

Page 156:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference
Page 157:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.66. IATO KERNEL LIBRARY COMPOUND LIST 147

0.66 IATO KERNEL LIBRARY Compound List

Here are the classes, structs, unions and interfaces with brief descriptions:

iato::KrnExit (The krnExit exception is a special exception that is thrown bythe interrupt engine when an exit system call has been received. Theexception holds the exit status value) . . . . . . . . . . . . . . . . . . . 147

iato::Syscall (The Syscall (p. 149) class is a special plugin designed to handlesystem calls. The plugin is constructed with the rse, the register bankand the system memory. By convention, the system call number is s-tored in gr[15] and the system call parameters are in the standard regis-ters starting at gr[32]. The rse is part of this plugin in order to find theright register for a given argument. Upon completion, the return valueis store in gr[10]. Generally a -1 value indicates an error. The plugincan directly work with virtual interrupt. In that case, the system expectthat the immediate break value is 0x10000 as defined by the IA64 ISA.Other value rethrow the interrupt) . . . . . . . . . . . . . . . . . . . . 149

0.67 iato::KrnExit Class Reference

The krnExit exception is a special exception that is thrown by the interrupt engine when anexit system call has been received. The exception holds the exit status value.

#include � KrnExit.hpp �

Public Methods

� KrnExit (const t octa status)

create a new exit exception with a statusParameters:

status the exception status.

� KrnExit (const KrnExit &that)

copy construct this exceptionParameters:

that the exception to copy.

� KrnExit & operator= (const KrnExit &that)

assign an exception to this oneParameters:

that the exception to assign.

� t octa getstatus (void) const

Returns:the exit status.

� void print (void) const

print the exception message.

Page 158:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

148

0.67.1 Detailed Description

The krnExit exception is a special exception that is thrown by the interrupt engine when anexit system call has been received. The exception holds the exit status value.

The documentation for this class was generated from the following file:

� KrnExit.hpp

Page 159:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.68. IATO::SYSCALL CLASS REFERENCE 149

0.68 iato::Syscall Class Reference

The Syscall (p. 149) class is a special plugin designed to handle system calls. The pluginis constructed with the rse, the register bank and the system memory. By convention, thesystem call number is stored in gr[15] and the system call parameters are in the standardregisters starting at gr[32]. The rse is part of this plugin in order to find the right registerfor a given argument. Upon completion, the return value is store in gr[10]. Generally a -1value indicates an error. The plugin can directly work with virtual interrupt. In that case,the system expect that the immediate break value is 0x10000 as defined by the IA64 ISA.Other value rethrow the interrupt.

#include � Syscall.hpp �

Public Methods

� Syscall (void)

create a default syscall.

� Syscall (ElfExec � mem)

create a syscall plugin with a memoryParameters:

mem the memory image.

� Syscall (Rse � rse, Register � rbk, ElfExec � mem)

create a plugin with a rse, register bank and memoryParameters:

rse the register stack enginerbk the register bankmem the executable memory.

� void setrse (Rse � rse)

set the system call rse objectParameters:

rse the rse object.

� void setrbk (Register � rbk)

set the system call register bank objectParameters:

rbk the register bank object.

� void setmem (ElfExec � mem)

set the system call memory objectParameters:

mem the memory object.

� void apply (void)

apply this syscall plugin.

� void apply (const Interrupt &vi)

apply this syscall plugin with an interruptParameters:

vi the virtual interrupt.

Page 160:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

150

0.68.1 Detailed Description

The Syscall (p. 149) class is a special plugin designed to handle system calls. The pluginis constructed with the rse, the register bank and the system memory. By convention, thesystem call number is stored in gr[15] and the system call parameters are in the standardregisters starting at gr[32]. The rse is part of this plugin in order to find the right registerfor a given argument. Upon completion, the return value is store in gr[10]. Generally a -1value indicates an error. The plugin can directly work with virtual interrupt. In that case,the system expect that the immediate break value is 0x10000 as defined by the IA64 ISA.Other value rethrow the interrupt.

The documentation for this class was generated from the following file:

� Syscall.hpp

Page 161:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

Part IV

MAC Library

151

Page 162:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference
Page 163:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.69. IATO MAC LIBRARY COMPOUND LIST 153

0.69 IATO MAC LIBRARY Compound List

Here are the classes, structs, unions and interfaces with brief descriptions:

iato::Bdb (The Bdb (p. 158) class is a bundle decoupling buffer. The Bdb(p. 158) is used primarily within an in-order machine to accumulatebundle and rotate them. Bundle are pushed on a line basis and con-sumed on a bundle basis. A threshold that represents the buffer sizeminus one line indicates that the decoupling buffer is almost full) . . . . 158

iato::Bimodal (The Bimodal (p. 161) class is a simple bimodal branch predictionsystem. Given an address, a pattern history buffer is consulted to detectwhether or not the branch is taken) . . . . . . . . . . . . . . . . . . . . 161

iato::Bpe (The Bpe (p. 163) class is the bypass network element. It is used tomodel the operations of the bypass network across multiple functionalunits. One bypass element is used by a stage to forward the instructionresults. All bypass element are merged into a global resource in orderto form the bypass network. The bypass element size is determined bythe maximum number of results a unit can produce) . . . . . . . . . . . 163

iato::Bpn (The Bpn (p. 165) class is the bypass network. It is a collection ofbypass element. Each element is allocated by a stage that needs resultforwarding. The bypass network can be used directly to evaluate someoperands. In case of match, such operand value is set automatically) . . 165

iato::Branch (The Branch (p. 167) class is a class that models a branch predic-tion system. Given an instruction pointer (IP) and an instruction win-dow size, the branch prediction system computes the next instructionpointer. The default implementation is to add the instruction windowsize to the current ip. Complex sstem can also be devised by derivationof this class) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

iato::Btb (The Btb (p. 169) class is a branch target buffer class. The btb is usedto to store for a given address, the associated target address. A givenbtb uses a valid bit, the instruction address abd the target address) . . . 169

iato::Cache (The Cache (p. 171) class is an abstract class that defines the basicinterface for a cache memory subsystem. The class is derived from thememory interface and shall be used to design larger system) . . . . . . 171

iato::CacheBlock (The CacheBlock (p. 173) class is a simple class that imple-ments the functionality of a cache block. A cache block is defined as anarray of N entries with a valid bit, a tag and a line. For simplicity, thetag is stored as an octa with a mask associated with the block. The lineis defined as a set of bytes) . . . . . . . . . . . . . . . . . . . . . . . . 173

iato::CacheDirect (The CacheDirect (p. 175) class is cache memory class thatimplements the direct mapping strategy. With a direct cache, there isonly one set and a unique position for a cache line. This is the simplestcache memory) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

iato::Delayable (The Delayable (p. 176) class is a special runnable class thatprovides latency controlled runnable method. Upon a call to the runmethod, a latency counter is decreased until reaching 0. At that pointthe activate method is called and the counter is resetted. Unlike therunnable method, the delayable class can be used for interface that op-erates at different frequency that the main one, or that needs to providesdelayed operation) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

Page 164:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

154

iato::Detect (The Detect (p. 178) class is a special resource used to detect specu-lative correctness. The main operation performed by the detection logicis twofold. First, for speculative rse operation, the detection logic makesure that any cfm part of an execution result has been correctly specu-lated. Second, the detection logic make sure that the speculative next ipassociated with branch instruction is also correct. If an error is found,the associated bit are set in the instruction record for further recovery.The detection logic is also involved in validating the predicate predic-tion. The speculative predicate value is checked against the real valuefound in the register bank. Note that with an out-of-order engine, thedetection logic will operate only if the register bank is in a correct statewith respect to the checked predicate) . . . . . . . . . . . . . . . . . . 178

iato::Disperse (The Disperse (p. 180) class is a generic class that can dispersea bundle into an issue port buffer. The class is a generic one and thesimplest implementation can disperse an instruction to the first availableunit only. More complex rule can be added by derivation if needed.In the base class, A type instruction are not disperse to either M or I.For that kind of dispersal, another disperser is required. The expandmethod disperse a bundle into the issue port buffer. If the bundle hasbeen succesfully dispersed, the method returns true. If the bundle ispartially dispersed, the dispersed instruction are marked invalid in thebundle and the method returns false) . . . . . . . . . . . . . . . . . . . 180

iato::Dsi (The Dsi (p. 182) class is the dynamically scheduled instruction that isderived from the statically instruction class. The class holds addition-al information that are used in a dynamically scheduled environment.Such information includes in particular the the reorder buffer (ROB)entry) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

iato::Eib (The Eib (p. 185) class is the external interrupt buffer that is imple-mented as a queue. External interrupts are supported by storing them ina queue and processing them as soon as possible. An external interruptis by nature asynchronous to the underlying hardware and should notbe confused with the synchronous one (aka instruction interrupt)) . . . . 185

iato::Eiq (The Eiq (p. 186) is the expand instruction queue. The queue operateslike a fifo. The ’push’ method push an instruction in the queue, whilethe ’pop’ method remove an instruction from the queue. If the queue isempty, an invalid instruction is returned. If the queue is full the ’push’method throw an exception) . . . . . . . . . . . . . . . . . . . . . . . 186

iato::Gcs (The Gcs (p. 188) class is the Grand Central Station (p. 261) class, thatis a collection of reservation station tables. The sole purpose of creatingsuch resource is to permit a particular pipelane stage to broadcast readyoperands to all stations) . . . . . . . . . . . . . . . . . . . . . . . . . . 188

iato::Ghpp (The Ghpp (p. 190) class is a global history percetron based withpredicate access, predicate predictor. The predictor operates with aglobal history and an array of perceptrons. The perceptron is accessby using the predicate index) . . . . . . . . . . . . . . . . . . . . . . . 190

iato::Gshare (The Gshare (p. 192) class is a gloabal history branch predictionsystem. Given an address, this address is combined (xor) with the gobalhistory register value to produce an entry into the pht. The pht value isbranch prediction value) . . . . . . . . . . . . . . . . . . . . . . . . . 192

iato::Hma (The Hma (p. 194) class is the hierarchical memory architecture. Thememory model is build with or without caches. In bypass mode, nocache are installed and a direct access to the memory is perfomed viathe mta. In non bypass mode, the memory access is performed via amemory request interface that is normally part of a port request) . . . . 194

Page 165:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.69. IATO MAC LIBRARY COMPOUND LIST 155

iato::Htr (The Htr (p. 196) class is a history class. The class is designed to storethe a k-bits history that is used later by a predictor to hash the address(with Ga type branch predictor). Note that the maximum size is 64 bits.The Htr (p. 196) class is also a good candidate for predicate predictorthat is built around a global history mechanism) . . . . . . . . . . . . . 196

iato::Hypp (The Hypp (p. 198) class is a hybrid predicate predictor that is builtwith two predictors. The confidence is obtained by comparing for dif-ferences the two predictors) . . . . . . . . . . . . . . . . . . . . . . . . 198

iato::Iib (The Iib (p. 200) is the instruction interrupt buffer. The interrupt bufferallocation is generally done when the instruction is decoded and theassociated index is part of the decoded instruction) . . . . . . . . . . . 200

iato::Ipb (The Ipb (p. 202) class is the issue port buffer. It is a set of ports that aregrouped into a family set. At construction, the context determines howmany slots can be held in the buffer. Each micro-pipeline is respon-sible to add the required slot. The Ipb (p. 202) is used by an in-ordersimulation engine) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

iato::Irb (The Irb (p. 204) is the instruction result buffer. The class acts as abuffer with an index setup in the rob. Each entry is made of the instruc-tion and the instruction result. The size of the instruction buffer is asbig as the rob) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204

iato::Mli (The Mli (p. 206) class is a special resource used to perform read oper-ations from a result object with a memory port request. This class actsas a simple logic) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

iato::Mob (The Mob (p. 208) class is the memory ordering buffer. It is a rotatingresource that maintain the load/store ordering. An entry is made with avalid bit, a size (aka an address mask) and an address. This mob doesnot hold the associated value due to the cache interference) . . . . . . . 208

iato::Mpr (The Mpr (p. 210) class is a memory request port. The port is boundwith a memory transaction adapter (mta). If the port is associated witha memory request interface (mri), the port can be operating in blockingmode. Without mri, the port operates in direct mode (i.e without delay)) 210

iato::Mta (The Mta (p. 212) class is a memory transaction adapter class thatadapts the memory transaction to with a result object. The adaptersupports also bundle related transactions. Additionally, the adapter isdesigned to respond to alat request) . . . . . . . . . . . . . . . . . . . . 212

iato::Mtx (The Mtx (p. 214) class is the micro-architecture context class. Thisclass is derived from the isa context class and provides additional pa-rameters that are used by the micro-architectural implementation) . . . 214

iato::Perceptron (The Perceptron (p. 215) class is a base class used to build aperceptron predictor. The perceptron operates a set of weights. Theweights are used to compute the perceptron value that is later mappedto a boolean value. The weights can be bound by a value. The numberof weights is called the perceptron size) . . . . . . . . . . . . . . . . . 215

iato::Phpp (The Phpp (p. 217) class is a per predicate history percetron basedwith predicate access, predicate predictor. The predictor operates with apredicate history and an array of perceptrons. The perceptron is accessby using the predicate index) . . . . . . . . . . . . . . . . . . . . . . . 217

iato::Pht (The Pht (p. 219) class is a pattern history table class. The class isdefined as an array of 2 bits saturating counters (Sct (p. 252)). Given anindex the pht can be updated or queried to get a prediction status) . . . . 219

Page 166:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

156

iato::Pimodal (The Pimodal (p. 221) class is a simple predicate prediction sys-tem. Given a predicate number, the pht table is accesed and a predictionis returned. This system does not use the instruction address or slot. Theterm ’pimodal’ is cooked from ’bimodal’ with the B (branch) replacedwith a P (predicate)) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

iato::Pipelane (The Pipelane (p. 223) class is a collection of micro pipeline thatoperates in parallel. At each cycle, all parallel stages are run in parallel.Each micro pipeline do not need to have the same depth. by default,the pipelane operates in non-blocking mode. This means that if a stageis holding, onnly thoise previous stage in the same micro-pipeline willbe stalled. If the pipelane operates in blocking mode, a holding stagecauses all other stages to block. Such mode is used with an in-ordermachine) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223

iato::Pipeline (The Pipeline (p. 225) class is a genric container class that holdsthe pipeline stages of the selected micro-architecture. Simply speaking,a pipeline is a vector of stages that would be run sequentially. Whenadding a new stage, the pipeline stage is added at the end of the vector.Once created, the pipeline is connected with the ”bind” method. Run-ning the pipeline is done by running all stages in reverse order. Normalorder is done for flushing and reseting) . . . . . . . . . . . . . . . . . . 225

iato::Ppag (The Ppag (p. 227) class is a perpredciate history predicate predictionsystem. Given an address, this address is combined (xor) with the pred-icate history in order to produce an entry into the pht. The pht value isthe predicate prediction value) . . . . . . . . . . . . . . . . . . . . . . 227

iato::Predicate (The Predicate (p. 229) class is a class that models a predicateprediction system. This class is a base class that provides three typesof services, namely prediction confidence (i.e avaibility), predicate pre-diction and system update. A complex prediction system can be builtby derivation. This system, as a base system never provide prediction) . 229

iato::Pshare (The Pshare (p. 232) class is a global history predicate predictionsystem. Given an address, this address is combined (xor) with the glob-al history register value (and eventually the predicate number) to pro-duce an entry into the pht. The pht value is the predicate predictionvalue) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232

iato::Rat (The Rat (p. 234) class is the ram implementation of the Register AliasTable The class establishes a binding between a logical register numberand another one. For each register types, a rat is created those size isdefined by the isa. A special case is induced by the gr bank, that canhave more registers as defined by the isa) . . . . . . . . . . . . . . . . 234

iato::ReqBuf (The ReqBuf (p. 236) class is the port request buffer class. It actsas an array of request ports. The request port buffer is used by thememory architecture to bind each request port with the equivalent portacknowledger in bypass mode) . . . . . . . . . . . . . . . . . . . . . . 236

iato::Restart (The Restart (p. 238) class is a special class designed to act asa pipeline restart under certain circumstances. When a pipeline flushrequest occurs, all stages are flushed and a restart condition is placed inthe restart. The fetch and decode stages uses that information to resetappropriately the associated resources and restart the execution of theinstruction at the proper instruction slot) . . . . . . . . . . . . . . . . . 238

Page 167:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.69. IATO MAC LIBRARY COMPOUND LIST 157

iato::Rob (The Rob (p. 241) class implements a reorder buffer as a fifo. Therob is used to retire instruction in order and process interrupt. Thisrob implementation is instruction based. Using an instruction basedrob simplifies the architecture, since there is no need to handle MLXbundles as well as implied dependencies. The interrupt processing isalso simplified. The entry allocation is on the other end complex) . . . . 241

iato::RseLogic (The RseLogic (p. 244) class is the rse control logic with specu-lative support. The logic operates in a predict/update mode. If the logicis associated with a branch prediction system, such logic is updated ac-cording to the speculation status. The rse logic also implements a rsestack buffer that hold the rse state in association with predicted branches)244

iato::RseStack (The RseStack (p. 246) class implements a finite stack of rsestate. When a rse dependant branch is made, the rse state is placed onthe stack or reterived from it. The rse state contains mostly the cfmregister that defines the state of the renaming circuitry. The rse stack isan essential piece of code that permits to operate with a branch predictor)246

iato::Runnable (The Runnable (p. 248) class is an abstract class that definesthe ”run” and ”flush” methods. The run method executes virtually onecycle of the runnbale object. The runnable interface can be reset andflushed. The difference is interface dependent) . . . . . . . . . . . . . . 248

iato::Scoreboard (The Scoreboard (p. 249) class implements a register score-boarding facility. The primary scoreboard structure is the instructionlist with their associated states. Instruction are placed in-order in thelist ands their state is updated by the appropriate stages. For a givenregister , indicated by its rid, the scoreboard structure list the registersthose value are produced by multicycle instruction. Such register arethose with L1D misses as well as floating or multi media instructions) . 249

iato::Sct (The Sct (p. 252) class is a two bit saturating counter used within pre-diction systems. The ’update’ method can be used to adjust the countervalue while the ’istrue’ method returns true if the counter is in a true state)252

iato::Slot (The Slot (p. 254) class is an issue port slot. It is used to store a par-ticular instruction beeing routed. The slot object holds the slot type aswell as the slot index) . . . . . . . . . . . . . . . . . . . . . . . . . . . 254

iato::Ssi (The Ssi (p. 256) class is the sta=tically scheduled instruction that is de-rived from the isa instruction class. The class holds additional instruc-tion information that are used in a speculative environment. One partic-ular important information is the speculative cfm value that is vaed inthe instruction) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256

iato::Stage (The Stage (p. 259) class is an abstract class that models a pipelinestage. At construction a stage uses a context object to configure itself.Once all stages have been created, they can be bounded together withthe ’bind’ method. The bind method uses an environment object whichamong other things holds the global resources of the processor. A stageis defined with a name. A hold bit also indicates if a stage has been puton hold by another stage. Pipeline (p. 225) stages are linked togetherin the mean of the previous and next stage) . . . . . . . . . . . . . . . . 259

Page 168:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

158

iato::Station (The Station (p. 261) class is a resource that is designed to act as areservation station table. A reservation station is one entry in the table.The sole purpose of a resrvationn station is to park instruction wait-ing for their operands. When the operands are ready, the instruction iswaked-up and delivered to the next stage. The complete administrationtask is actually quite complexe. First, a valid bit indicates if the entry isvalid. Second a wake-up bit indicates if the instruction has been waked-up. The instruction remains in the station until it has been write-backedor cancelled by local or global flush. The station also maintains a pri-ority table that is used by the scheduler to select the ready instructions) . 261

iato::Stb (The Stb (p. 264) class is the store buffer. The store buffer is a queue ofpair (address/value) and a size. Entries are added in order in the buffer.The store buffer is primarily used at the commit stage to perform thewrite operations) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264

iato::System (The System (p. 266) class is the memory system interface. Theclass is used to bind the system memory as well as other interface thatmight needed during the course of the simulation. With a programname, a program image is created and associated with various mem-ory unit. The binding between an instruction memory and a programimage is done during the simulation binding process) . . . . . . . . . . 266

iato::Trb (The Trb (p. 268) class is the translation register bank class definition.For each register type a translation bank is created with a size equal tothe number of physical registers. Each register provides a direct trans-lation to the physical register. A valid bit, associated with the registerindicates if that translation register is valid. At reset, the default trans-lation is initialized with a mapping corresponding to the logical registerdefinition) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268

iato::Urb (The Urb (p. 270) class is the universal register bank class definition.An urb entry holds a uvr value and a valid bit. The urb is used to storein-flight instruction register result before the value is commited into thelogical register file. The size of the urb is an architectural parameter) . . 270

iato::Urf (The Urf (p. 272) class is the universal register file class definition. TheUrf (p. 272) is built with a translation register bank (trb), the universalregister bank (urb), and the register alias table (rat). The main reasonto group these three resources into one, is to simplify the operand e-valution and the result update as well as the speculative flush of therenaming logic. Each individual resources can be accessed by gettingthem) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272

iato::Weakable (The Weakable (p. 274) class is an abstract class that defines the”notify” method. The ’notify’ method is used by an object to requestan immediate action. Most likely, the notify method will invoke theactivate method, although the notify method has an argument that is thecaller) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274

0.70 iato::Bdb Class Reference

The Bdb (p. 158) class is a bundle decoupling buffer. The Bdb (p. 158) is used primarilywithin an in-order machine to accumulate bundle and rotate them. Bundle are pushed ona line basis and consumed on a bundle basis. A threshold that represents the buffer sizeminus one line indicates that the decoupling buffer is almost full.

#include � Bdb.hpp �

Page 169:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.70. IATO::BDB CLASS REFERENCE 159

Public Methods

� Bdb (void)

create a default bdb.

� Bdb (const long size)

create a bdb by sizeParameters:

size the bdb size.

� Bdb (Mtx � mtx)

create a bdb by contextParameters:

mtx the architectural context.

��� Bdb (void)

destroy this bdb.

� void reset (void)

reset this bdb.

� void report (void) const

report this resource.

� long getsize (void) constReturns:

the bdb size.

� bool isempty (void) constReturns:

true if the buffer is empty.

� bool isfull (void) constReturns:

true if the buffer is full.

� bool isthr (void) constReturns:

true if the buffer is at the threshold.

� void push (const Bundle &bndl)

push a bundle in the bufferParameters:

bndl the bundle to push.

� void back (const Bundle &bndl)

push back a bundle in the bufferParameters:

bndl the bundle to push back.

� Bundle pop (void)Returns:

a bundle from the buffer.

Page 170:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

160

0.70.1 Detailed Description

The Bdb (p. 158) class is a bundle decoupling buffer. The Bdb (p. 158) is used primarilywithin an in-order machine to accumulate bundle and rotate them. Bundle are pushed ona line basis and consumed on a bundle basis. A threshold that represents the buffer sizeminus one line indicates that the decoupling buffer is almost full.

The documentation for this class was generated from the following file:

� Bdb.hpp

Page 171:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.71. IATO::BIMODAL CLASS REFERENCE 161

0.71 iato::Bimodal Class Reference

The Bimodal (p. 161) class is a simple bimodal branch prediction system. Given an ad-dress, a pattern history buffer is consulted to detect whether or not the branch is taken.

#include � Bimodal.hpp �

Inherits iato::Branch.

Public Methods

� Bimodal (void)

create a default bimodal predictor.

� Bimodal (Mtx � mtx)

create a new bimodal predictor by contextParameters:

mtx the architectural context.

� Bimodal (Mtx � mtx, const string &name)

create a new bimodal predictor by context and nameParameters:

mtx the architectural contextname the branch resource name.

��� Bimodal (void)

destroy this predictor.

� void reset (void)

reset this prodictor.

� void report (void) const

report some resource information.

� bool istaken (const t octa cip, const long slot) constReturns:

true if the branch is predicted taken.

� bool ispredict (const t octa cip, const long slot) constReturns:

true if the branch can be predicted.

� t octa predict (const t octa cip, const long slot)

predict the next ip from the current ip and slotParameters:

cip the current instruction pointerslot the instruction slot.

� void update (const t octa cip, const long slot, const bool btk, const t octa nip)

update the branch prediction with a current and next ipParameters:

cip the current ip to updateslot the current slot to updatebtk the branch taken flagnip the next ip to use.

Page 172:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

162

0.71.1 Detailed Description

The Bimodal (p. 161) class is a simple bimodal branch prediction system. Given an ad-dress, a pattern history buffer is consulted to detect whether or not the branch is taken.

The documentation for this class was generated from the following file:

� Bimodal.hpp

Page 173:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.72. IATO::BPE CLASS REFERENCE 163

0.72 iato::Bpe Class Reference

The Bpe (p. 163) class is the bypass network element. It is used to model the operations ofthe bypass network across multiple functional units. One bypass element is used by a stageto forward the instruction results. All bypass element are merged into a global resource inorder to form the bypass network. The bypass element size is determined by the maximumnumber of results a unit can produce.

#include � Bpe.hpp �

Public Methods

� Bpe (void)

create a default bypass element.

� Bpe (Mtx � mtx)

create a bypass network by contextParameters:

mtx the architectural context.

� Bpe (Mtx � mtx, const string &name)

create a bypass network by context and nameParameters:

mtx the architectural contextname the rat resource name.

��� Bpe (void)

destroy this bypass element.

� void reset (void)

reset this bypass element.

� void report (void) const

report this resource.

� void setuvr (const long index, const Rid &rid, const Uvr &uvr)

set a bypass value by index, rid and valueParameters:

index the element indexrid the rid to mapuvr the uvr to map.

� long find (const Rid &rid) constReturns:

the index of a matching bypass element.

� Rid getrid (const long index) constReturns:

the rid associated with a bypass element.

� Uvr getuvr (const long index) constReturns:

the uvr associated with a bypass element.

Page 174:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

164

� void update (const Result &resl)

update the bpe with a resultParameters:

resl the result used to update the bpe.

� void clear (const Rid &rid)

clear a bypass element by ridParameters:

rid the bpe rid to clear.

0.72.1 Detailed Description

The Bpe (p. 163) class is the bypass network element. It is used to model the operations ofthe bypass network across multiple functional units. One bypass element is used by a stageto forward the instruction results. All bypass element are merged into a global resource inorder to form the bypass network. The bypass element size is determined by the maximumnumber of results a unit can produce.

The documentation for this class was generated from the following file:

� Bpe.hpp

Page 175:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.73. IATO::BPN CLASS REFERENCE 165

0.73 iato::Bpn Class Reference

The Bpn (p. 165) class is the bypass network. It is a collection of bypass element. Eachelement is allocated by a stage that needs result forwarding. The bypass network can beused directly to evaluate some operands. In case of match, such operand value is set auto-matically.

#include � Bpn.hpp �

Public Methods

� Bpn (void)

create an empty network.

� Bpn (Mtx � mtx)

create an empty network by contextParameters:

mtx the architectural context.

� Bpn (Mtx � mtx, const string &name)

create an empty network by context and nameParameters:

mtx the architectural contextname the resource name.

� void reset (void)

reset this network.

� void report (void) const

report this resource.

� void add (Bpe � bpe)

add a network elementParameters:

bpe the element to add.

� Uvr eval (const Rid &rid) const

evaluate an rid in the bypass networkParameters:

rid the rid to evaluate.

� void eval (Operand &oprd) const

evaluate an operand in the networkParameters:

oprd the operand to evaluate.

� void update (Operand &oprd) const

update an operand in the networkParameters:

oprd the operand to evaluate.

� void update (const Ssi &ssi, Result &resl) const

Page 176:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

166

update the result with rpm valueParameters:

ssi the instruction for updateresl the result to update.

� void clear (const Rid &rid)

clear a bypass element by ridParameters:

rid the bpe rid to clear.

� void clear (const Result &resl)

clear a bypass element by resultParameters:

resl the result used for clearing.

0.73.1 Detailed Description

The Bpn (p. 165) class is the bypass network. It is a collection of bypass element. Eachelement is allocated by a stage that needs result forwarding. The bypass network can beused directly to evaluate some operands. In case of match, such operand value is set auto-matically.

The documentation for this class was generated from the following file:

� Bpn.hpp

Page 177:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.74. IATO::BRANCH CLASS REFERENCE 167

0.74 iato::Branch Class Reference

The Branch (p. 167) class is a class that models a branch prediction system. Given aninstruction pointer (IP) and an instruction window size, the branch prediction system com-putes the next instruction pointer. The default implementation is to add the instructionwindow size to the current ip. Complex sstem can also be devised by derivation of thisclass.

#include � Branch.hpp �

Inherited by iato::Bimodal, and iato::Gshare.

Public Methods

� Branch (void)

create a default branch predictor.

� Branch (const string &name)

create a branch predictor by nameParameters:

name the branch resource name.

� Branch (Mtx � mtx)

create a new branch system by contextParameters:

mtx the architectural context.

� Branch (Mtx � mtx, const string &name)

create a new branch system by context and nameParameters:

mtx the architectural contextname the branch resource name.

� void reset (void)

reset this branch system.

� void report (void) const

report some resource information.

� virtual bool istaken (const t octa addr, const long slot) constReturns:

true if the branch is predicted taken.

� virtual bool ispredict (const t octa addr, const long slot) constReturns:

true if the branch can be predicted.

� virtual t octa nextip (const t octa cip, const long ws)

compute the next ip from the current ip and window sizeParameters:

cip the current instruction pointerws the window size.

Page 178:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

168

� virtual t octa predict (const t octa cip, const long slt)

predict the next ip from the current ip and slotParameters:

cip the current instruction pointerslt the instruction slot.

� virtual void update (const t octa cip, const long slt, const bool btk, const t octa nip)

update the branch prediction with a current and next ipParameters:

cip the current ip to updateslt the current slot to updatebtk the branch taken flagnip the next ip to use.

� virtual void markbr (const Instr &inst, const Result &resl, const bool btk)

update the branch system with an instruction, result and cancel flagParameters:

inst the branch instructionresl the instruction resultbtk the branch taken flag.

Static Public Methods

� Branch � mkbr (Mtx � mtx)

return a new branch predictor by contextParameters:

mtx the architectural context.

0.74.1 Detailed Description

The Branch (p. 167) class is a class that models a branch prediction system. Given aninstruction pointer (IP) and an instruction window size, the branch prediction system com-putes the next instruction pointer. The default implementation is to add the instructionwindow size to the current ip. Complex sstem can also be devised by derivation of thisclass.

The documentation for this class was generated from the following file:

� Branch.hpp

Page 179:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.75. IATO::BTB CLASS REFERENCE 169

0.75 iato::Btb Class Reference

The Btb (p. 169) class is a branch target buffer class. The btb is used to to store for a givenaddress, the associated target address. A given btb uses a valid bit, the instruction addressabd the target address.

#include � Btb.hpp �

Public Methods

� Btb (void)

create a default btb.

� Btb (const long size)

create a btb with a sizeParameters:

size the btb size.

� Btb (Mtx � mtx)

create a btb with a contextParameters:

mtx the architectural context.

��� Btb (void)

destroy this btb.

� void reset (void)

reset this btb.

� long getsize (void) const

Returns:the btb size.

� bool isvalid (const t octa addr) const

Returns:true if the address is valid.

� t octa gettrg (const t octa addr) const

get the btb target by addressParameters:

addr the address tag.

� void update (const t octa addr, const t octa targ)

update the btb with an address and a targetParameters:

addr the address used for updatetarg the target address to store.

Page 180:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

170

0.75.1 Detailed Description

The Btb (p. 169) class is a branch target buffer class. The btb is used to to store for a givenaddress, the associated target address. A given btb uses a valid bit, the instruction addressabd the target address.

The documentation for this class was generated from the following file:

� Btb.hpp

Page 181:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.76. IATO::CACHE CLASS REFERENCE 171

0.76 iato::Cache Class Reference

The Cache (p. 171) class is an abstract class that defines the basic interface for a cachememory subsystem. The class is derived from the memory interface and shall be used todesign larger system.

#include � Cache.hpp �

Inherited by iato::CacheDirect.

Public Types

� enum t cmtype

the cache types.

� enum t cmupd

cache update policy.

� enum t cmwrt

cache write policy.

Public Methods

� Cache (void)

create a default cache memory.

� virtual void setparam (const long level, const t cmtype type, const t cmupd cupd,const t cmwrt cwrt)

set the cache parametersParameters:

level the cache leveltype the cache typecupd the cache update policycwrt the cache write policy.

� virtual t cmtype gettype (void) const

Returns:the cache type.

� virtual long getlevel (void) const

Returns:the cache level.

� virtual void update (const t octa addr, const t byte � line)=0

update a line with a bufferParameters:

addr the base address to updateline the line buffer to update.

Page 182:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

172

Protected Attributes

� t cmtype d type

the cache type.

� t cmupd d cupd

cache update.

� t cmwrt d cwrt

cache write.

� long d level

the cache level.

0.76.1 Detailed Description

The Cache (p. 171) class is an abstract class that defines the basic interface for a cachememory subsystem. The class is derived from the memory interface and shall be used todesign larger system.

The documentation for this class was generated from the following file:

� Cache.hpp

Page 183:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.77. IATO::CACHEBLOCK CLASS REFERENCE 173

0.77 iato::CacheBlock Class Reference

The CacheBlock (p. 173) class is a simple class that implements the functionality of acache block. A cache block is defined as an array of N entries with a valid bit, a tag and aline. For simplicity, the tag is stored as an octa with a mask associated with the block. Theline is defined as a set of bytes.

#include � CacheBlock.hpp �

Public Methods

� CacheBlock (const long size, const long blsz)

create a cache block by size and maskParameters:

size the block sizeblsz the block line size.

��� CacheBlock (void)

destroy this cache block.

� void reset (void)

reset this cache block.

� bool isvalid (const long index, const t octa addr) constReturns:

true if the line address is valid.

� t byte readbyte (const long index, const t octa addr) const

read a line byte at a certain addressParameters:

index the line index in the blockaddr the address to read the byte.

� void writebyte (const long index, const t octa addr, const t byte byte)

write a line byte at a certain addressParameters:

index the line index in the blockaddr the address to read the bytebyte the byte to write.

� void update (const long index, const t octa addr, const t byte � line)

update a line with a bufferParameters:

index the line index in the blockaddr the base address to updateline the line buffer to update.

0.77.1 Detailed Description

The CacheBlock (p. 173) class is a simple class that implements the functionality of acache block. A cache block is defined as an array of N entries with a valid bit, a tag and aline. For simplicity, the tag is stored as an octa with a mask associated with the block. Theline is defined as a set of bytes.

Page 184:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

174

The documentation for this class was generated from the following file:

� CacheBlock.hpp

Page 185:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.78. IATO::CACHEDIRECT CLASS REFERENCE 175

0.78 iato::CacheDirect Class Reference

The CacheDirect (p. 175) class is cache memory class that implements the direct mappingstrategy. With a direct cache, there is only one set and a unique position for a cache line.This is the simplest cache memory.

#include � CacheDirect.hpp �

Inherits iato::Cache.

Public Methods� CacheDirect (const long size, const long clsz)

create a direct cache by size and line sizeParameters:

size the cache sizeclsz the block line size.

��� CacheDirect (void)

destroy this cache.

� void reset (void)

reset this cache.

� bool isvalid (const t octa addr) constReturns:

true if the address is valid.

� t byte readbyte (const t octa addr) const

read a byte at a certain addressParameters:

addr the address to read.

� void writebyte (const t octa addr, const t byte byte)

write a byte at a certain addressParameters:

addr the address to write the bytebyte the byte to write.

� void update (const t octa addr, const t byte � line)

update a line with a bufferParameters:

addr the base address to updateline the line buffer to update.

0.78.1 Detailed Description

The CacheDirect (p. 175) class is cache memory class that implements the direct mappingstrategy. With a direct cache, there is only one set and a unique position for a cache line.This is the simplest cache memory.

The documentation for this class was generated from the following file:

� CacheDirect.hpp

Page 186:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

176

0.79 iato::Delayable Class Reference

The Delayable (p. 176) class is a special runnable class that provides latency controlledrunnable method. Upon a call to the run method, a latency counter is decreased untilreaching 0. At that point the activate method is called and the counter is resetted. Unlikethe runnable method, the delayable class can be used for interface that operates at differentfrequency that the main one, or that needs to provides delayed operation.

#include � Delayable.hpp �

Inherits iato::Runnable.

Inherited by iato::Stage, and iato::Weakable.

Public Methods

� Delayable (void)

create a default delayable.

� Delayable (const string &name)

create a new delayable by nameParameters:

name the delayable resource name.

� void reset (void)

reset this delayable interface.

� void flush (void)

flush this delayable interface.

� void run (void)

run this delayable object.

� virtual void activate (void)=0

activate this delayable object.

� virtual void setdlat (const long dlat)

set the delayable latencyParameters:

dlat the delayable latency.

� virtual long getdlat (void) constReturns:

the delayable latency.

Protected Attributes

� long d dlat

the delay latency.

� long d dcnt

Page 187:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.79. IATO::DELAYABLE CLASS REFERENCE 177

the delay counter.

0.79.1 Detailed Description

The Delayable (p. 176) class is a special runnable class that provides latency controlledrunnable method. Upon a call to the run method, a latency counter is decreased untilreaching 0. At that point the activate method is called and the counter is resetted. Unlikethe runnable method, the delayable class can be used for interface that operates at differentfrequency that the main one, or that needs to provides delayed operation.

The documentation for this class was generated from the following file:

� Delayable.hpp

Page 188:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

178

0.80 iato::Detect Class Reference

The Detect (p. 178) class is a special resource used to detect speculative correctness. Themain operation performed by the detection logic is twofold. First, for speculative rse op-eration, the detection logic make sure that any cfm part of an execution result has beencorrectly speculated. Second, the detection logic make sure that the speculative next ipassociated with branch instruction is also correct. If an error is found, the associated bitare set in the instruction record for further recovery. The detection logic is also involved invalidating the predicate prediction. The speculative predicate value is checked against thereal value found in the register bank. Note that with an out-of-order engine, the detectionlogic will operate only if the register bank is in a correct state with respect to the checkedpredicate.

#include � Detect.hpp �

Public Methods

� Detect (void)

create a default detect logic.

� Detect (Mtx � mtx)

create a new detection logic by contextParameters:

mtx the architectural context.

� Detect (Mtx � mtx, const string &name)

create a new detection logic by context and nameParameters:

mtx the architectural contextname the branch resource name.

� void reset (void)

reset this detection logic.

� void report (void) const

report some resource information.

� bool chksip (const Ssi &ssi, const Result &resl) const

Returns:true if the ip speculation is correct.

� bool chkspp (const Ssi &ssi) const

Returns:true if the predicate prediction is valid.

� void bind (Register � rbk)

bind the register bankParameters:

rbk the reggister bank to bind.

Page 189:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.80. IATO::DETECT CLASS REFERENCE 179

0.80.1 Detailed Description

The Detect (p. 178) class is a special resource used to detect speculative correctness. Themain operation performed by the detection logic is twofold. First, for speculative rse op-eration, the detection logic make sure that any cfm part of an execution result has beencorrectly speculated. Second, the detection logic make sure that the speculative next ipassociated with branch instruction is also correct. If an error is found, the associated bitare set in the instruction record for further recovery. The detection logic is also involved invalidating the predicate prediction. The speculative predicate value is checked against thereal value found in the register bank. Note that with an out-of-order engine, the detectionlogic will operate only if the register bank is in a correct state with respect to the checkedpredicate.

The documentation for this class was generated from the following file:

� Detect.hpp

Page 190:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

180

0.81 iato::Disperse Class Reference

the Disperse (p. 180) class is a generic class that can disperse a bundle into an issue portbuffer. The class is a generic one and the simplest implementation can disperse an in-struction to the first available unit only. More complex rule can be added by derivation ifneeded. In the base class, A type instruction are not disperse to either M or I. For that kindof dispersal, another disperser is required. The expand method disperse a bundle into theissue port buffer. If the bundle has been succesfully dispersed, the method returns true. Ifthe bundle is partially dispersed, the dispersed instruction are marked invalid in the bundleand the method returns false.

#include � Disperse.hpp �

Public Methods

� Disperse (void)

create a default dispersal engine.

� Disperse (const string &name)

create a dispersal engine by nameParameters:

name the dispersal engine resource name.

� Disperse (Mtx � mtx)

create a new dispersal engine system by contextParameters:

mtx the architectural context.

� Disperse (Mtx � mtx, const string &name)

create a new dispersal engine system by context and nameParameters:

mtx the architectural contextname the dispersal engine resource name.

� void reset (void)

reset this resource.

� void report (void) const

report this resource.

� virtual bool isback (const Bundle &bndl) constReturns:

true if a bundle must be pushed back.

� virtual bool isnext (const Bundle &bnld) constReturns:

true if a bundle can be followed by another one.

� virtual void expand (Bundle &bndl)

disperse a bundle into an issue port bufferParameters:

bndl the bundle to expand.

Page 191:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.81. IATO::DISPERSE CLASS REFERENCE 181

� virtual void bind (Ipb � ipb, Iib � iib, Mob � mob, Scoreboard � psb)

bind the ipb and the scoreboardParameters:

iib the interrupt bufferipb the ipb to bindmob the mob to bindpsb the scoreboard to bind.

Protected Attributes

� Ipb � p ipb

the input port buffer.

� Iib � p iib

the interrupt buffer.

� Mob � p mob

the memory ordering buffer.

� Scoreboard � p psb

the scoreboard.

0.81.1 Detailed Description

the Disperse (p. 180) class is a generic class that can disperse a bundle into an issue portbuffer. The class is a generic one and the simplest implementation can disperse an in-struction to the first available unit only. More complex rule can be added by derivation ifneeded. In the base class, A type instruction are not disperse to either M or I. For that kindof dispersal, another disperser is required. The expand method disperse a bundle into theissue port buffer. If the bundle has been succesfully dispersed, the method returns true. Ifthe bundle is partially dispersed, the dispersed instruction are marked invalid in the bundleand the method returns false.

The documentation for this class was generated from the following file:

� Disperse.hpp

Page 192:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

182

0.82 iato::Dsi Class Reference

The Dsi (p. 182) class is the dynamically scheduled instruction that is derived from thestatically instruction class. The class holds additional information that are used in a dy-namically scheduled environment. Such information includes in particular the the reorderbuffer (ROB) entry.

#include � Dsi.hpp �

Inherits iato::Ssi.

Public Methods

� Dsi (void)

create a default dsi.

� Dsi (const Instr &inst)

create a dsi from an instructionParameters:

inst the instruction to use.

� Dsi (const Dsi &that)

copy construct this dsiParameters:

that the dsi to copy.

� Dsi & operator= (const Dsi &that)

assign a dsi to this oneParameters:

that the dsi to assign.

� Dsi & operator= (const Instr &that)

assign an instruction to this dsiParameters:

that the instruction to assign.

� void reset (void)

reset this dsi.

� bool ispresr (void) constReturns:

true if this instruction needs pre-serialization.

� bool ispostsr (void) constReturns:

true if this instruction needs post-serialization.

� bool isready (void) constReturns:

true if the instruction is ready for selection.

� void setready (const Rid &rid)

Page 193:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.82. IATO::DSI CLASS REFERENCE 183

set an instruction operand ready by ridParameters:

rid the rid use to mark the operand ready.

� void setrsch (const bool rsch)

set the instruction reschedule flagParameters:

rsch the reschedule flag to set.

� bool getrsch (void) const

Returns:the reschedule flag.

� void setpnrd (const bool pnrd)

set the predicate not ready flagParameters:

pnrd the not ready flag.

� bool getpnrd (void) const

Returns:the predicate not ready flag.

� void setsid (const long index)

set the station entryParameters:

index the station index.

� long getsid (void) const

Returns:the station entry.

� void setgcs (const long index)

set the gcs indexParameters:

index the gcs index.

� long getgcs (void) const

Returns:the gcs index.

� void setelat (const long elat)

set the execution latencyParameters:

elat the execution latency.

� long getelat (void) const

Returns:the execution latency.

Page 194:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

184

0.82.1 Detailed Description

The Dsi (p. 182) class is the dynamically scheduled instruction that is derived from thestatically instruction class. The class holds additional information that are used in a dy-namically scheduled environment. Such information includes in particular the the reorderbuffer (ROB) entry.

The documentation for this class was generated from the following file:

� Dsi.hpp

Page 195:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.83. IATO::EIB CLASS REFERENCE 185

0.83 iato::Eib Class Reference

The Eib (p. 185) class is the external interrupt buffer that is implemented as a queue. Ex-ternal interrupts are supported by storing them in a queue and processing them as soon aspossible. An external interrupt is by nature asynchronous to the underlying hardware andshould not be confused with the synchronous one (aka instruction interrupt).

#include � Eib.hpp �

Public Methods

� Eib (void)

create a new interrupt buffer.

� Eib (Mtx � mtx)

create a new interrupt buffer with a contextParameters:

mtx the architectural context.

� void reset (void)

reset this interrupt buffer.

� void report (void) const

report this resource.

� bool isempty (void) constReturns:

true if the interrupt buffer is empty.

� void push (const Interrupt &vi)

push an interrupt in the bufferParameters:

vi the virtual interrupt to push.

� Interrupt pop (void)

pop an interrupt from this buffer.

0.83.1 Detailed Description

The Eib (p. 185) class is the external interrupt buffer that is implemented as a queue. Ex-ternal interrupts are supported by storing them in a queue and processing them as soon aspossible. An external interrupt is by nature asynchronous to the underlying hardware andshould not be confused with the synchronous one (aka instruction interrupt).

The documentation for this class was generated from the following file:

� Eib.hpp

Page 196:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

186

0.84 iato::Eiq Class Reference

The Eiq (p. 186) is the expand instruction queue. The queue operates like a fifo. The ’push’method push an instruction in the queue, while the ’pop’ method remove an instructionfrom the queue. If the queue is empty, an invalid instruction is returned. If the queue is fullthe ’push’ method throw an exception.

#include � Eiq.hpp �

Public Methods

� Eiq (void)

create a new queue.

� Eiq (Mtx � mtx)

create a new queue with a contextParameters:

mtx the architectural context.

��� Eiq (void)

destroy this queue.

� void reset (void)

reset this queue.

� void report (void) const

report this resource.

� bool isempty (void) const

Returns:true if the queue is empty.

� bool isfull (void) const

Returns:true if the queue is full.

� bool isthr (void) const

Returns:true if the queue has reached the threshold.

� void push (const Dsi &dsi)

push an instruction in the queueParameters:

dsi the instruction to push.

� Dsi pop (void)

Returns:the oldest instruction from the queue.

Page 197:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.84. IATO::EIQ CLASS REFERENCE 187

0.84.1 Detailed Description

The Eiq (p. 186) is the expand instruction queue. The queue operates like a fifo. The ’push’method push an instruction in the queue, while the ’pop’ method remove an instructionfrom the queue. If the queue is empty, an invalid instruction is returned. If the queue is fullthe ’push’ method throw an exception.

The documentation for this class was generated from the following file:

� Eiq.hpp

Page 198:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

188

0.85 iato::Gcs Class Reference

The Gcs (p. 188) class is the Grand Central Station (p. 261) class, that is a collection ofreservation station tables. The sole purpose of creating such resource is to permit a partic-ular pipelane stage to broadcast ready operands to all stations.

#include � Gcs.hpp �

Public Methods

� Gcs (Mtx � mtx)

create an empty central with a contextParameters:

mtx the architectural context.

��� Gcs (void)

destroy this gcs.

� void reset (void)

reset this central.

� void report (void) const

report this resource.

� void setstc (Stat � stc)

set the stat collector to all stationsParameters:

stc the stat collector to set.

� void settrc (Tracer � tracer)

bind the tracer to all stationsParameters:

tracer the resource tracer to bind.

� long add (Station � sta)

add a station to this central and return its indexParameters:

sta the station to add.

� void clear (const long igcs, const long sidx)

clear a station entry by gcs and station indexParameters:

igcs the gcs indexsidx the station index.

� void clear (const Dsi &dsi)

clear a station etry by instructionParameters:

dsi the instruction used to clear.

� void setcnl (const Result &resl)

broadcast a cancel flag to all stations

Page 199:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.85. IATO::GCS CLASS REFERENCE 189

Parameters:resl the result to broadcast.

� void setrdy (const Rid &rid)

broadcast a rid to all stationParameters:

rid the rid to broadcast.

� void setrdy (const Result &resl)

broadcast a result to all stationParameters:

resl the result to broadcast.

� Dsi setrdy (const Dsi &inst)

broadcast an instruction to all station or decrease latencyParameters:

inst the instruction to check.

� void resched (const Dsi &dsi)

reschedule an instruction in a station.

� void dump (void) const

dump all stations contents.

0.85.1 Detailed Description

The Gcs (p. 188) class is the Grand Central Station (p. 261) class, that is a collection ofreservation station tables. The sole purpose of creating such resource is to permit a partic-ular pipelane stage to broadcast ready operands to all stations.

The documentation for this class was generated from the following file:

� Gcs.hpp

Page 200:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

190

0.86 iato::Ghpp Class Reference

The Ghpp (p. 190) class is a global history percetron based with predicate access, predicatepredictor. The predictor operates with a global history and an array of perceptrons. Theperceptron is access by using the predicate index.

#include � Ghpp.hpp �

Inherits iato::Predicate.

Public Methods

� Ghpp (void)

create a default predictor.

� Ghpp (Mtx � mtx)

create a new ghpp predictor by contextParameters:

mtx the architectural context.

� Ghpp (Mtx � mtx, const string &name)

create a new ghpp predictor by context and nameParameters:

mtx the architectural contextname the branch resource name.

��� Ghpp (void)

destroy this predictor.

� void reset (void)

reset this prodictor.

� void report (void) const

report some resource information.

� bool isvalid (const t octa ip, const long slot, const long pred) constReturns:

true if the predicate can be predicted.

� bool compute (const t octa ip, const long slot, const long pred) const

compute the predicate valueParameters:

ip the instruction ipslot the instruction slotpred the predicate number.

� void update (const t octa ip, const long slot, const long pred, const bool pval, constbool bflg)

update the predicate prediction by index and valueParameters:

ip the instruction ipslot the instruction slotpred the predicate indexpval the predicate valuebflg the branch flag.

Page 201:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.86. IATO::GHPP CLASS REFERENCE 191

0.86.1 Detailed Description

The Ghpp (p. 190) class is a global history percetron based with predicate access, predicatepredictor. The predictor operates with a global history and an array of perceptrons. Theperceptron is access by using the predicate index.

The documentation for this class was generated from the following file:

� Ghpp.hpp

Page 202:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

192

0.87 iato::Gshare Class Reference

The Gshare (p. 192) class is a gloabal history branch prediction system. Given an address,this address is combined (xor) with the gobal history register value to produce an entry intothe pht. The pht value is branch prediction value.

#include � Gshare.hpp �

Inherits iato::Branch.

Public Methods

� Gshare (void)

create a default gshare predictor.

� Gshare (Mtx � mtx)

create a new gshare predictor by contextParameters:

mtx the architectural context.

� Gshare (Mtx � mtx, const string &name)

create a new gshare predictor by context and nameParameters:

mtx the architectural contextname the branch resource name.

��� Gshare (void)

destroy this predictor.

� void reset (void)

reset this prodictor.

� void report (void) const

report some resource information.

� bool istaken (const t octa cip, const long slot) constReturns:

true if the branch is predicted taken.

� bool ispredict (const t octa cip, const long slot) constReturns:

true if the branch can be predicted.

� t octa predict (const t octa cip, const long slot)

predict the next ip from the current ip and slotParameters:

cip the current instruction pointerslot the instruction slot.

� void update (const t octa cip, const long slot, const bool btk, const t octa nip)

update the branch prediction with a current and next ipParameters:

cip the current ip to update

Page 203:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.87. IATO::GSHARE CLASS REFERENCE 193

slot the current slot to updatebtk the branch taken flagnip the next ip to use.

0.87.1 Detailed Description

The Gshare (p. 192) class is a gloabal history branch prediction system. Given an address,this address is combined (xor) with the gobal history register value to produce an entry intothe pht. The pht value is branch prediction value.

The documentation for this class was generated from the following file:

� Gshare.hpp

Page 204:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

194

0.88 iato::Hma Class Reference

The Hma (p. 194) class is the hierarchical memory architecture. The memory model isbuild with or without caches. In bypass mode, no cache are installed and a direct access tothe memory is perfomed via the mta. In non bypass mode, the memory access is performedvia a memory request interface that is normally part of a port request.

#include � Hma.hpp �

Inherits iato::Runnable.

Public Methods

� Hma (Memory � mem)

create a memory architecture with a memory imageParameters:

mem the memory image to use.

� Hma (Mtx � mtx, Memory � mem)

create a memory interface with a context and memory imageParameters:

mtx the architectural contextmem the memory image to use.

� void reset (void)

reset this interface.

� void flush (void)

flush this interface.

� void report (void) const

report this resource.

� void run (void)

run this runnable object.

� Mta � getmta (void) constReturns:

the memory adapter.

Protected Attributes

� Mta � p mta

the mta.

� Memory � p mem

the memory image.

� bool d mbb

the memory bypass bit.

Page 205:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.88. IATO::HMA CLASS REFERENCE 195

0.88.1 Detailed Description

The Hma (p. 194) class is the hierarchical memory architecture. The memory model isbuild with or without caches. In bypass mode, no cache are installed and a direct access tothe memory is perfomed via the mta. In non bypass mode, the memory access is performedvia a memory request interface that is normally part of a port request.

The documentation for this class was generated from the following file:

� Hma.hpp

Page 206:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

196

0.89 iato::Htr Class Reference

The Htr (p. 196) class is a history class. The class is designed to store the a k-bits historythat is used later by a predictor to hash the address (with Ga type branch predictor). Notethat the maximum size is 64 bits. The Htr (p. 196) class is also a good candidate forpredicate predictor that is built around a global history mechanism.

#include � Htr.hpp �

Public Methods

� Htr (void)

create a default htr.

� Htr (const long size)

create a htr by sizeParameters:

size the htr size.

� Htr (Mtx � mtx)

create a htr by contextParameters:

mtx the architectural context.

� Htr (const Htr &that)

copy construct this htrParameters:

that the htr to copy.

� void reset (void)

reset this htr.

� Htr & operator= (const Htr &that)

assign a htr to this oneParameters:

that the htr to assign.

� long getsize (void) const

Returns:the htr size.

� t octa gethist (void) constReturns:

the masked htr value.

� t octa update (const bool flag)

update the history by flagParameters:

flag the flag used for update.

Page 207:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.89. IATO::HTR CLASS REFERENCE 197

0.89.1 Detailed Description

The Htr (p. 196) class is a history class. The class is designed to store the a k-bits historythat is used later by a predictor to hash the address (with Ga type branch predictor). Notethat the maximum size is 64 bits. The Htr (p. 196) class is also a good candidate forpredicate predictor that is built around a global history mechanism.

The documentation for this class was generated from the following file:

� Htr.hpp

Page 208:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

198

0.90 iato::Hypp Class Reference

The Hypp (p. 198) class is a hybrid predicate predictor that is built with two predictors.The confidence is obtained by comparing for differences the two predictors.

#include � Hypp.hpp �

Inherits iato::Predicate.

Public Methods

� Hypp (void)

create a default hybrid predictor.

� Hypp (Mtx � mtx)

create a new hybrid predictor by contextParameters:

mtx the architectural context.

� Hypp (Mtx � mtx, const string &name)

create a new bybrid predictor by context and nameParameters:

mtx the architectural contextname the branch resource name.

��� Hypp (void)

destroy this predictor.

� void reset (void)

reset this predictor.

� void report (void) const

report some resource information.

� bool isvalid (const t octa ip, const long slot, const long pred) constReturns:

true if the predicate can be predicted.

� bool compute (const t octa ip, const long slot, const long pred) const

compute the predicate valueParameters:

ip the instruction ipslot the instruction slotpred the predicate number.

� void update (const t octa ip, const long slot, const long pred, const bool pval, constbool bflg)

update the predicate prediction by index and valueParameters:

ip the instruction ipslot the instruction slotpred the predicate indexpval the predicate valuebflg the branch flag.

Page 209:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.90. IATO::HYPP CLASS REFERENCE 199

0.90.1 Detailed Description

The Hypp (p. 198) class is a hybrid predicate predictor that is built with two predictors.The confidence is obtained by comparing for differences the two predictors.

The documentation for this class was generated from the following file:

� Hypp.hpp

Page 210:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

200

0.91 iato::Iib Class Reference

The Iib (p. 200) is the instruction interrupt buffer. The interrupt buffer allocation is gener-ally done when the instruction is decoded and the associated index is part of the decodedinstruction.

#include � Iib.hpp �

Public Methods

� Iib (void)

create a new buffer.

� Iib (Mtx � mtx)

create a new buffer with a contextParameters:

mtx the architectural context.

��� Iib (void)

destroy this buffer.

� void reset (void)

reset this buffer.

� void report (void) const

report this resource.

� bool isempty (void) constReturns:

true if the buffer is empty.

� bool isfull (void) constReturns:

true if the buffer is full.

� bool isthr (void) constReturns:

true if the iib has reached the threshold.

� bool isvalid (const long index) constReturns:

true if the buffer entry is valid.

� void clear (const long index)

clear an iib entry by index.

� long alloc (void)

allocate a new iib entry.

� Interrupt getintr (const long index) constReturns:

an interrupt by index.

Page 211:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.91. IATO::IIB CLASS REFERENCE 201

� void setintr (const long index, const Interrupt &intr)

set an interrupt by indexParameters:

index the iib indexintr the interrupt to set.

0.91.1 Detailed Description

The Iib (p. 200) is the instruction interrupt buffer. The interrupt buffer allocation is gener-ally done when the instruction is decoded and the associated index is part of the decodedinstruction.

The documentation for this class was generated from the following file:

� Iib.hpp

Page 212:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

202

0.92 iato::Ipb Class Reference

The Ipb (p. 202) class is the issue port buffer. It is a set of ports that are grouped intoa family set. At construction, the context determines how many slots can be held in thebuffer. Each micro-pipeline is responsible to add the required slot. The Ipb (p. 202) is usedby an in-order simulation engine.

#include � Ipb.hpp �

Public Methods

� Ipb (Mtx � mtx)

create a new buffer with a contextParameters:

mtx the architectural context.

� Ipb (Mtx � mtx, const string &name)

create a new buffer with a context and a nameParameters:

mtx the architectural contextname the buffer name.

��� Ipb (void)

destroy this buffer.

� void reset (void)

reset this buffer.

� void report (void) const

report this resource.

� long getsize (t unit unit) constReturns:

a buffer size by unit.

� void add (Slot � slot)

add a slot in the buffer.

� long find (t unit unit) const

find a free slot by unit.

� void setinst (t unit unit, const long slot, const Ssi &ssi)

set the slot instruction by unit, index and instructionParameters:

unit the unit slot to useslot the slot indexssi the instruction to set.

� Ssi getinst (t unit unit, const long slot) constReturns:

an instruction by unit and slot.

Page 213:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.92. IATO::IPB CLASS REFERENCE 203

0.92.1 Detailed Description

The Ipb (p. 202) class is the issue port buffer. It is a set of ports that are grouped intoa family set. At construction, the context determines how many slots can be held in thebuffer. Each micro-pipeline is responsible to add the required slot. The Ipb (p. 202) is usedby an in-order simulation engine.

The documentation for this class was generated from the following file:

� Ipb.hpp

Page 214:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

204

0.93 iato::Irb Class Reference

The Irb (p. 204) is the instruction result buffer. The class acts as a buffer with an indexsetup in the rob. Each entry is made of the instruction and the instruction result. The sizeof the instruction buffer is as big as the rob.

#include � Irb.hpp �

Public Methods

� Irb (void)

create a new irb.

� Irb (Mtx � mtx)

create a new irb with a contextParameters:

mtx the architectural context.

��� Irb (void)

destroy this irb.

� void reset (void)

reset this irb.

� void report (void) const

report this resource.

� bool isempty (void) constReturns:

true if the irb is empty.

� bool isvalid (const long index) constReturns:

true if the irb entry is valid.

� void clear (const long index)

clear an irb entry by idex.

� long alloc (const Dsi &inst, const Result &resl)

allocate a new irb entryParameters:

inst the instruction to bufferresl the instruction result.

� Dsi getinst (const long index) constReturns:

an instruction entry by index.

� Result getresl (const long index) constReturns:

an instruction result by index.

Page 215:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.93. IATO::IRB CLASS REFERENCE 205

0.93.1 Detailed Description

The Irb (p. 204) is the instruction result buffer. The class acts as a buffer with an indexsetup in the rob. Each entry is made of the instruction and the instruction result. The sizeof the instruction buffer is as big as the rob.

The documentation for this class was generated from the following file:

� Irb.hpp

Page 216:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

206

0.94 iato::Mli Class Reference

The Mli (p. 206) class is a special resource used to perform read operations from a resultobject with a memory port request. This class acts as a simple logic.

#include � Mli.hpp �

Public Methods

� Mli (void)

create a default memory read logic.

� Mli (Mtx � mtx)

create a new memory read logic by contextParameters:

mtx the architectural context.

� Mli (Mtx � mtx, const string &name)

create a new memory read logic by context and nameParameters:

mtx the architectural contextname the branch resource name.

� void reset (void)

reset this memory read logic.

� void report (void) const

report some resource information.

� void bind (Mta � mta, Mob � mob)

bind a memory request portParameters:

mta the memory transaction adaptermob the memory ordering buffer.

� void preset (const Ssi &inst, Result &resl)

preset a memory operation with a resultParameters:

inst the instruction to processresl the result used for request.

� void update (const Ssi &inst, const Result &resl)

update a memory operation with a resultParameters:

inst the instruction to processresl the result used for request.

0.94.1 Detailed Description

The Mli (p. 206) class is a special resource used to perform read operations from a resultobject with a memory port request. This class acts as a simple logic.

The documentation for this class was generated from the following file:

Page 217:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.94. IATO::MLI CLASS REFERENCE 207

� Mli.hpp

Page 218:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

208

0.95 iato::Mob Class Reference

The Mob (p. 208) class is the memory ordering buffer. It is a rotating resource that maintainthe load/store ordering. An entry is made with a valid bit, a size (aka an address mask) andan address. This mob does not hold the associated value due to the cache interference.

#include � Mob.hpp �

Public Methods

� Mob (void)

create a new mob.

� Mob (Mtx � mtx)

create a new mob with a contextParameters:

mtx the architectural context.

��� Mob (void)

destroy this mob.

� void reset (void)

reset this mob.

� void report (void) const

report this resource.

� bool isempty (void) constReturns:

true if the mob is empty.

� bool isvalid (const long index) constReturns:

true if the mob entry is valid.

� bool iscancel (const long index) constReturns:

true if the mob entry has been cancelled.

� void clear (const long index)

clear an mob entry by index.

� long alloc (const bool ildb, const bool istb)

allocate a new mob entryParameters:

ildb the instruction load flagistb the instruction store flag.

� void preset (const long index, const Mrt &mrt)

preset a load by index and mrtParameters:

index the mob store indexmrt the memory request type.

Page 219:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.95. IATO::MOB CLASS REFERENCE 209

� void update (const long index, const Mrt &mrt)

commit a store by index and mrtParameters:

index the mob store indexmrt the memory request type.

� void process (const long index, const Mrt &mrt)

process a memory request by index and mrtParameters:

index the mob store indexmrt the memory request type.

0.95.1 Detailed Description

The Mob (p. 208) class is the memory ordering buffer. It is a rotating resource that maintainthe load/store ordering. An entry is made with a valid bit, a size (aka an address mask) andan address. This mob does not hold the associated value due to the cache interference.

The documentation for this class was generated from the following file:

� Mob.hpp

Page 220:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

210

0.96 iato::Mpr Class Reference

The Mpr (p. 210) class is a memory request port. The port is bound with a memory trans-action adapter (mta). If the port is associated with a memory request interface (mri), theport can be operating in blocking mode. Without mri, the port operates in direct mode (i.ewithout delay).

#include � Mpr.hpp �

Public Methods

� Mpr (void)

create a default port.

� Mpr (Mtx � mtx)

create a port by contextParameters:

mtx the architectural context.

� Mpr (Mtx � mtx, const string &name)

create a port by context and nameParameters:

mtx the architectural contextname the port name.

� void reset (void)

reset this port mta.

� void flush (void)

flush this port mta.

� void report (void) const

report this port mta.

� virtual bool isbusy (void) constReturns:

the busy bit.

� virtual bool istack (void) constReturns:

the transaction acknowldge bit.

� virtual Mrt getmrt (void) constReturns:

the memory request type.

� virtual Bundle getbndl (const long index) constReturns:

a transaction bundle by index.

� virtual void request (const Mrt &mrt)

issue a port request by mrt

Page 221:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.96. IATO::MPR CLASS REFERENCE 211

Parameters:mrt the memory request to process.

� virtual void preset (const Mrt &mrt)

issue a port load request by mrtParameters:

mrt the memory request to process.

� virtual void update (const Mrt &mrt)

issue a port store request by mrtParameters:

mrt the memory request to process.

� virtual void bind (Mta � mta)

bind the port resourcesParameters:

mta the mta to bind.

0.96.1 Detailed Description

The Mpr (p. 210) class is a memory request port. The port is bound with a memory trans-action adapter (mta). If the port is associated with a memory request interface (mri), theport can be operating in blocking mode. Without mri, the port operates in direct mode (i.ewithout delay).

The documentation for this class was generated from the following file:

� Mpr.hpp

Page 222:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

212

0.97 iato::Mta Class Reference

The Mta (p. 212) class is a memory transaction adapter class that adapts the memory trans-action to with a result object. The adapter supports also bundle related transactions. Addi-tionally, the adapter is designed to respond to alat request.

#include � Mta.hpp �

Public Types

� enum t tmem

the mta memory types.

Public Methods

� Mta (void)

create a default mta.

� Mta (Mtx � mtx)

create a mta with a contextParameters:

mtx the architectural context.

� Mta (Mtx � mtx, const string &name)

create a mta with a context and a nameParameters:

mtx the architectural contextname the resource name.

��� Mta (void)

destroy this mta.

� void reset (void)

reset this mta.

� void bind (Memory � mem)

bind a memory to the mtaParameters:

mem the memory to bind.

� void bind (t tmem type, Memory � mem)

bind a memory to the mta by typeParameters:

type the memory type to bindmem the memory to bind.

� void process (Mrt &mrt)

process a memory requestParameters:

mrt the memory request to process.

Page 223:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.97. IATO::MTA CLASS REFERENCE 213

� void update (const t octa bip) const

update a bundle array at a certain addressParameters:

bip the bunlde ip to use.

� Bundle getbndl (const long index) constReturns:

the mta bundle by index.

0.97.1 Detailed Description

The Mta (p. 212) class is a memory transaction adapter class that adapts the memory trans-action to with a result object. The adapter supports also bundle related transactions. Addi-tionally, the adapter is designed to respond to alat request.

The documentation for this class was generated from the following file:

� Mta.hpp

Page 224:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

214

0.98 iato::Mtx Class Reference

The Mtx (p. 214) class is the micro-architecture context class. This class is derived from theisa context class and provides additional parameters that are used by the micro-architecturalimplementation.

#include � Mtx.hpp �

Public Methods

� Mtx (void)

create a new context.

� void reset (void)

reset this context.

� void update (const t arch arch)

reset this context with a particular architecture.

� long getsbsz (void) constReturns:

the system bus size.

� long getsblt (void) constReturns:

the system bus latency.

� long gettusz (void) constReturns:

the total number of units.

0.98.1 Detailed Description

The Mtx (p. 214) class is the micro-architecture context class. This class is derived from theisa context class and provides additional parameters that are used by the micro-architecturalimplementation.

The documentation for this class was generated from the following file:

� Mtx.hpp

Page 225:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.99. IATO::PERCEPTRON CLASS REFERENCE 215

0.99 iato::Perceptron Class Reference

The Perceptron (p. 215) class is a base class used to build a perceptron predictor. Theperceptron operates a set of weights. The weights are used to compute the perceptron valuethat is later mapped to a boolean value. The weights can be bound by a value. The numberof weights is called the perceptron size.

#include � Perceptron.hpp �

Public Methods

� Perceptron (void)

create a default perceptron.

� Perceptron (Mtx � mtx)

create a perceptron with a contextParameters:

mtx the architectural context.

��� Perceptron (void)

destroy this perceptron.

� void reset (void)

reset this perceptron.

� long getsize (void) constReturns:

the perceptron size.

� long getwbnd (void) constReturns:

the perceptron weight bound.

� long getpthr (void) constReturns:

the perceptron threshold.

� long getpcbn (void) constReturns:

the perceptron confidence bound.

� bool isvalid (const t octa hist) constReturns:

true if the perceptron is within the confidence bound.

� bool istrue (const t octa hist) constReturns:

true if the perceptron is ok.

� long compute (const t octa hist) constReturns:

the perceptron value.

Page 226:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

216

� void update (const t octa hist)

update a perceptron with a historyParameters:

hist the history used for update.

0.99.1 Detailed Description

The Perceptron (p. 215) class is a base class used to build a perceptron predictor. Theperceptron operates a set of weights. The weights are used to compute the perceptron valuethat is later mapped to a boolean value. The weights can be bound by a value. The numberof weights is called the perceptron size.

The documentation for this class was generated from the following file:

� Perceptron.hpp

Page 227:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.100. IATO::PHPP CLASS REFERENCE 217

0.100 iato::Phpp Class Reference

The Phpp (p. 217) class is a per predicate history percetron based with predicate access,predicate predictor. The predictor operates with a predicate history and an array of percep-trons. The perceptron is access by using the predicate index.

#include � Phpp.hpp �

Inherits iato::Predicate.

Public Methods

� Phpp (void)

create a default predictor.

� Phpp (Mtx � mtx)

create a new phpp predictor by contextParameters:

mtx the architectural context.

� Phpp (Mtx � mtx, const string &name)

create a new phpp predictor by context and nameParameters:

mtx the architectural contextname the branch resource name.

��� Phpp (void)

destroy this predictor.

� void reset (void)

reset this prodictor.

� void report (void) const

report some resource information.

� bool isvalid (const t octa ip, const long slot, const long pred) constReturns:

true if the predicate can be predicted.

� bool compute (const t octa ip, const long slot, const long pred) const

compute the predicate valueParameters:

ip the instruction ipslot the instruction slotpred the predicate number.

� void update (const t octa ip, const long slot, const long pred, const bool pval, constbool bflg)

update the predicate prediction by index and valueParameters:

ip the instruction ipslot the instruction slotpred the predicate indexpval the predbflg the branch flagicate value.

Page 228:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

218

0.100.1 Detailed Description

The Phpp (p. 217) class is a per predicate history percetron based with predicate access,predicate predictor. The predictor operates with a predicate history and an array of percep-trons. The perceptron is access by using the predicate index.

The documentation for this class was generated from the following file:

� Phpp.hpp

Page 229:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.101. IATO::PHT CLASS REFERENCE 219

0.101 iato::Pht Class Reference

The Pht (p. 219) class is a pattern history table class. The class is defined as an array of 2bits saturating counters (Sct (p. 252)). Given an index the pht can be updated or queried toget a prediction status.

#include � Pht.hpp �

Public Methods

� Pht (void)

create a default pht.

� Pht (const long size)

create a pht with a sizeParameters:

size the pht size.

� Pht (Mtx � mtx)

create a pht with a contextParameters:

mtx the architectural context.

��� Pht (void)

destroy this pht.

� void reset (void)

reset this pht.

� long getsize (void) constReturns:

the pht size.

� virtual long hash (const t octa ip, const long slot) constReturns:

a hashed index by address and slot.

� virtual bool isstrong (const long index) constReturns:

true if the prediction is strong by index.

� virtual bool isstrong (const t octa ip, const long slot) constReturns:

true if the prediction is strong by address and slot.

� virtual bool isweak (const long index) constReturns:

true if the prediction is weak by index.

� virtual bool isweak (const t octa ip, const long slot) constReturns:

true if the prediction is weak by address and slot.

Page 230:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

220

� virtual bool istrue (const long index) constReturns:

true if the prediction is true by index.

� virtual bool istrue (const t octa ip, const long slot) constReturns:

true if the prediction is true by address and slot.

� virtual void update (const long index, const bool flag)

update the pht by indexParameters:

index the pht indexflag the flag used for update.

� virtual void update (const t octa ip, const long slot, const bool flag)

update the pht by address and slotParameters:

ip the pht addressslot the pht slotflag the flag used for update.

0.101.1 Detailed Description

The Pht (p. 219) class is a pattern history table class. The class is defined as an array of 2bits saturating counters (Sct (p. 252)). Given an index the pht can be updated or queried toget a prediction status.

The documentation for this class was generated from the following file:

� Pht.hpp

Page 231:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.102. IATO::PIMODAL CLASS REFERENCE 221

0.102 iato::Pimodal Class Reference

The Pimodal (p. 221) class is a simple predicate prediction system. Given a predicatenumber, the pht table is accesed and a prediction is returned. This system does not usethe instruction address or slot. The term ’pimodal’ is cooked from ’bimodal’ with the B(branch) replaced with a P (predicate).

#include � Pimodal.hpp �

Inherits iato::Predicate.

Public Methods

� Pimodal (void)

create a default pimodal predictor.

� Pimodal (Mtx � mtx)

create a new pimodal predictor by contextParameters:

mtx the architectural context.

� Pimodal (Mtx � mtx, const string &name)

create a new pimodal predictor by context and nameParameters:

mtx the architectural contextname the branch resource name.

��� Pimodal (void)

destroy this predictor.

� void reset (void)

reset this predictor.

� void report (void) const

report some resource information.

� bool isvalid (const t octa ip, const long slot, const long pred) constReturns:

true if the predicate can be predicted.

� bool compute (const t octa ip, const long slot, const long pred) const

compute the predicate valueParameters:

ip the instruction ipslot the instruction slotpred the predicate number.

� void update (const t octa ip, const long slot, const long pred, const bool pval, constbool bflg)

update the predicate prediction by index and valueParameters:

ip the instruction ipslot the instruction slotpred the predicate indexpval the predicate valuebflg the branch flag.

Page 232:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

222

0.102.1 Detailed Description

The Pimodal (p. 221) class is a simple predicate prediction system. Given a predicatenumber, the pht table is accesed and a prediction is returned. This system does not usethe instruction address or slot. The term ’pimodal’ is cooked from ’bimodal’ with the B(branch) replaced with a P (predicate).

The documentation for this class was generated from the following file:

� Pimodal.hpp

Page 233:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.103. IATO::PIPELANE CLASS REFERENCE 223

0.103 iato::Pipelane Class Reference

The Pipelane (p. 223) class is a collection of micro pipeline that operates in parallel. Ateach cycle, all parallel stages are run in parallel. Each micro pipeline do not need to havethe same depth. by default, the pipelane operates in non-blocking mode. This means thatif a stage is holding, onnly thoise previous stage in the same micro-pipeline will be stalled.If the pipelane operates in blocking mode, a holding stage causes all other stages to block.Such mode is used with an in-order machine.

#include � Pipelane.hpp �

Inherits iato::Stage.

Public Methods

� Pipelane (Mtx � mtx)

create a default pipelane with a contextParameters:

mtx the architectural context.

� Pipelane (Mtx � mtx, const string &name)

create a new pipelane with a context and nameParameters:

mtx the architectural contextname the pipelane name.

��� Pipelane (void)

destroy this pipelane.

� void reset (void)

reset this pipelane.

� void flush (void)

flush this pipelane.

� bool isholding (void) const

return true if one stage is holding.

� void activate (void)

activate all pipelines.

� void report (void) const

report on all pipelane stages.

� void setstc (Stat � stc)

set the stat collector to all pilelinesParameters:

stc the stat collector to set.

� void settrc (Tracer � tracer)

set the resource tracer to all pipelines

Page 234:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

224

Parameters:tracer the resource tracer to bind.

� void setblock (const bool mode)

set the blocking modeParameters:

mode the mode to set.

� bool getblock (void) constReturns:

the blocking mode.

� virtual void clear (void)

clear this pipelane.

� virtual long depth (void) constReturns:

the pipelane maximum depth.

� virtual void add (Pipeline � pipe)

add a new pipeline in this pipelaneParameters:

pipe the pipeline to add.

� virtual void setclog (const long index, Runnable � pclog)

set the pipeline control logic by indexParameters:

index the pipeline indexpclog the pipeline control logic.

� void bind (Env � env, Stage � pstg, Stage � nstg)

bind this pipelane with an execution environmentParameters:

env the execution environmentpstg the previous stagenstg the next stage.

0.103.1 Detailed Description

The Pipelane (p. 223) class is a collection of micro pipeline that operates in parallel. Ateach cycle, all parallel stages are run in parallel. Each micro pipeline do not need to havethe same depth. by default, the pipelane operates in non-blocking mode. This means thatif a stage is holding, onnly thoise previous stage in the same micro-pipeline will be stalled.If the pipelane operates in blocking mode, a holding stage causes all other stages to block.Such mode is used with an in-order machine.

The documentation for this class was generated from the following file:

� Pipelane.hpp

Page 235:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.104. IATO::PIPELINE CLASS REFERENCE 225

0.104 iato::Pipeline Class Reference

The Pipeline (p. 225) class is a genric container class that holds the pipeline stages of theselected micro-architecture. Simply speaking, a pipeline is a vector of stages that wouldbe run sequentially. When adding a new stage, the pipeline stage is added at the end ofthe vector. Once created, the pipeline is connected with the ”bind” method. Running thepipeline is done by running all stages in reverse order. Normal order is done for flushingand reseting.

#include � Pipeline.hpp �

Inherits iato::Runnable.

Public Methods

� Pipeline (Mtx � mtx)

create a default pipelineParameters:

mtx the architectural context.

� Pipeline (Mtx � mtx, const string &name)

create a new pipeline with a context and nameParameters:

mtx the architectural contextname the pipeline name.

��� Pipeline (void)

destroy this pipeline.

� void reset (void)

reset this pipeline.

� void flush (void)

flush this pipeline.

� bool isholding (const long index) const

return true if one stage is holding.

� void run (void)

run all pipeline stages.

� void run (const long index)

run one pipeline stage by indexParameters:

index the stage index to run.

� void report (void) const

report on all pipeline stages.

� void setstc (Stat � stc)

set the stat collector to all stages

Page 236:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

226

Parameters:stc the stat collector to set.

� void settrc (Tracer � tracer)

set the resource tracer to all resourcesParameters:

tracer the resource tracer to bind.

� virtual void clear (void)

clear this pipeline.

� virtual long depth (void) constReturns:

the pipeline depth.

� virtual void add (Stage � stg)

add a new stage in this pipelineParameters:

stg the stage to add.

� virtual Stage � get (const string &name) constReturns:

a pipeline stage by name.

� virtual void bind (Env � env, Stage � pstg, Stage � nstg)

bind this pipeline with an environment and the enclosing stagesParameters:

env the execution environmentpstg the previous stagenstg the next stage.

� virtual bool ishalted (void) constReturns:

true if the pipeline is halted.

0.104.1 Detailed Description

The Pipeline (p. 225) class is a genric container class that holds the pipeline stages of theselected micro-architecture. Simply speaking, a pipeline is a vector of stages that wouldbe run sequentially. When adding a new stage, the pipeline stage is added at the end ofthe vector. Once created, the pipeline is connected with the ”bind” method. Running thepipeline is done by running all stages in reverse order. Normal order is done for flushingand reseting.

The documentation for this class was generated from the following file:

� Pipeline.hpp

Page 237:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.105. IATO::PPAG CLASS REFERENCE 227

0.105 iato::Ppag Class Reference

The Ppag (p. 227) class is a perpredciate history predicate prediction system. Given anaddress, this address is combined (xor) with the predicate history in order to produce anentry into the pht. The pht value is the predicate prediction value.

#include � Ppag.hpp �

Inherits iato::Predicate.

Public Methods

� Ppag (void)

create a default ppag predictor.

� Ppag (Mtx � mtx)

create a new ppag predictor by contextParameters:

mtx the architectural context.

� Ppag (Mtx � mtx, const string &name)

create a new ppag predictor by context and nameParameters:

mtx the architectural contextname the branch resource name.

��� Ppag (void)

destroy this predictor.

� void reset (void)

reset this predictor.

� void report (void) const

report some resource information.

� bool isvalid (const t octa ip, const long slot, const long pred) constReturns:

true if the predicate can be predicted.

� bool compute (const t octa ip, const long slot, const long pred) const

compute the predicate valueParameters:

ip the instruction ipslot the instruction slotpred the predicate number.

� void update (const t octa ip, const long slot, const long pred, const bool pval, constbool bflg)

update the predicate prediction by index and valueParameters:

ip the instruction ipslot the instruction slotpred the predicate indexpval the predicate valuebflg the branch flag.

Page 238:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

228

0.105.1 Detailed Description

The Ppag (p. 227) class is a perpredciate history predicate prediction system. Given anaddress, this address is combined (xor) with the predicate history in order to produce anentry into the pht. The pht value is the predicate prediction value.

The documentation for this class was generated from the following file:

� Ppag.hpp

Page 239:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.106. IATO::PREDICATE CLASS REFERENCE 229

0.106 iato::Predicate Class Reference

The Predicate (p. 229) class is a class that models a predicate prediction system. Thisclass is a base class that provides three types of services, namely prediction confidence (i.eavaibility), predicate prediction and system update. A complex prediction system can bebuilt by derivation. This system, as a base system never provide prediction.

#include � Predicate.hpp �

Inherited by iato::Ghpp, iato::Hypp, iato::Phpp, iato::Pimodal, iato::Ppag, and ia-to::Pshare.

Public Methods

� Predicate (void)

create a default predictor.

� Predicate (const string &name)

create a predictor by nameParameters:

name the resource name.

� Predicate (Mtx � mtx)

create a new predicate system by contextParameters:

mtx the architectural context.

� Predicate (Mtx � mtx, const string &name)

create a new predicate system by context and nameParameters:

mtx the architectural contextname the predicate resource name.

� void reset (void)

reset this predictor.

� void report (void) const

report some resource information.

� virtual string gettype (void) constReturns:

the predictor type.

� virtual bool isvalid (const t octa ip, const long slot, const long pred) constReturns:

true if the predicate can be predicted.

� virtual bool ispredict (const Instr &inst) constReturns:

true if the instruction predicate can be predicted.

� virtual bool compute (const t octa ip, const long slot, const long pred) const

compute the predicate value

Page 240:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

230

Parameters:ip the instruction ipslot the instruction slotpred the predicate number.

� virtual bool predict (const Instr &inst) const

predict the instruction predicate valueParameters:

inst the instruction used for prediction.

� virtual void update (const t octa ip, const long slot, const long pred, const bool pval,const bool bflg)

update the predicate prediction by index and valueParameters:

ip the instruction ipslot the instruction slotpred the predicate indexpval the predicate valuebflg the branch flag.

� virtual void markpp (const Instr &inst, const bool pval)

update the predicate prediction by instruction and valueParameters:

inst the instruction used for updatepval the predicate value.

� virtual void markpp (const Instr &inst, const Result &resl)

update the predicate prediction by instruction and resultParameters:

inst the instruction used for updateresl the result used for update.

Static Public Methods

� Predicate � mkpr (const string &name)Returns:

a new predicate predictor by name.

� Predicate � mkpr (Mtx � mtx)Returns:

a new predicate predictor by context.

� Predicate � mkpr (const string &name, Mtx � mtx)Returns:

a new predicate predictor by name and context.

Protected Attributes

� string d type

the predictor type.

� bool d bupd

use branch for update.

Page 241:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.106. IATO::PREDICATE CLASS REFERENCE 231

0.106.1 Detailed Description

The Predicate (p. 229) class is a class that models a predicate prediction system. Thisclass is a base class that provides three types of services, namely prediction confidence (i.eavaibility), predicate prediction and system update. A complex prediction system can bebuilt by derivation. This system, as a base system never provide prediction.

The documentation for this class was generated from the following file:

� Predicate.hpp

Page 242:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

232

0.107 iato::Pshare Class Reference

The Pshare (p. 232) class is a global history predicate prediction system. Given an address,this address is combined (xor) with the global history register value (and eventually thepredicate number) to produce an entry into the pht. The pht value is the predicate predictionvalue.

#include � Pshare.hpp �

Inherits iato::Predicate.

Public Methods

� Pshare (void)

create a default pshare predictor.

� Pshare (Mtx � mtx)

create a new pshare predictor by contextParameters:

mtx the architectural context.

� Pshare (Mtx � mtx, const string &name)

create a new pshare predictor by context and nameParameters:

mtx the architectural contextname the branch resource name.

��� Pshare (void)

destroy this predictor.

� void reset (void)

reset this predictor.

� void report (void) const

report some resource information.

� bool isvalid (const t octa ip, const long slot, const long pred) constReturns:

true if the predicate can be predicted.

� bool compute (const t octa ip, const long slot, const long pred) const

compute the predicate valueParameters:

ip the instruction ipslot the instruction slotpred the predicate number.

� void update (const t octa ip, const long slot, const long pred, const bool pval, constbool bflg)

update the predicate prediction by index and valueParameters:

ip the instruction ipslot the instruction slotpred the predicate indexpval the predicate valuebflg the branch flag.

Page 243:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.107. IATO::PSHARE CLASS REFERENCE 233

0.107.1 Detailed Description

The Pshare (p. 232) class is a global history predicate prediction system. Given an address,this address is combined (xor) with the global history register value (and eventually thepredicate number) to produce an entry into the pht. The pht value is the predicate predictionvalue.

The documentation for this class was generated from the following file:

� Pshare.hpp

Page 244:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

234

0.108 iato::Rat Class Reference

The Rat (p. 234) class is the ram implementation of the Register Alias Table The classestablishes a binding between a logical register number and another one. For each registertypes, a rat is created those size is defined by the isa. A special case is induced by the grbank, that can have more registers as defined by the isa.

#include � Rat.hpp �

Public Methods

� Rat (void)

create a default rat.

� Rat (Mtx � mtx)

create a new rat by contextParameters:

mtx the architectural context.

� Rat (Mtx � mtx, const string &name)

create a new rat by context and nameParameters:

mtx the architectural contextname the rat resource name.

��� Rat (void)

destroy this rat.

� void reset (void)

reset this rat.

� void report (void) const

report this resource.

� long getsize (t lreg lreg) constReturns:

the number of registers by type.

� long getmap (t lreg lreg, const long rnum) const

get the register mapping by register type and idParameters:

lreg the register typernum the register number.

� long getmap (const Rid &rid) const

get the register mapping by ridParameters:

rid the register id to use.

� long setmap (t lreg lreg, const long rnum, const long mnum)

set the register mapping by type and id and return the old one

Page 245:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.108. IATO::RAT CLASS REFERENCE 235

Parameters:lreg the register type to setrnum the register number to setmnum the mapping register number.

� long setmap (const Rid &rid, const long mnum)

set the register mapping by rid and return the old oneParameters:

rid the register id to setmnum the mapping register number.

0.108.1 Detailed Description

The Rat (p. 234) class is the ram implementation of the Register Alias Table The classestablishes a binding between a logical register number and another one. For each registertypes, a rat is created those size is defined by the isa. A special case is induced by the grbank, that can have more registers as defined by the isa.

The documentation for this class was generated from the following file:

� Rat.hpp

Page 246:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

236

0.109 iato::ReqBuf Class Reference

The ReqBuf (p. 236) class is the port request buffer class. It acts as an array of requestports. The request port buffer is used by the memory architecture to bind each request portwith the equivalent port acknowledger in bypass mode.

#include � ReqBuf.hpp �

Public Methods

� ReqBuf (void)

create an empty buffer.

� ReqBuf (Mtx � mtx)

create an empty buffer with a contextParameters:

mtx the architectural context.

� void reset (void)

reset this buffer.

� void flush (void)

flush this buffer.

� void report (void) const

report this resource.

� long length (void) constReturns:

the buffer size.

� PortReq � get (const long index) constReturns:

a port request by index.

� void add (PortReq � preq)

add a port request to this bufferParameters:

preq the port request to add.

� void bind (Weakable � pack)

bind a port acknowledger to all port requestParameters:

pack the port acknowledger to bind.

0.109.1 Detailed Description

The ReqBuf (p. 236) class is the port request buffer class. It acts as an array of requestports. The request port buffer is used by the memory architecture to bind each request portwith the equivalent port acknowledger in bypass mode.

The documentation for this class was generated from the following file:

Page 247:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.109. IATO::REQBUF CLASS REFERENCE 237

� ReqBuf.hpp

Page 248:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

238

0.110 iato::Restart Class Reference

The Restart (p. 238) class is a special class designed to act as a pipeline restart undercertain circumstances. When a pipeline flush request occurs, all stages are flushed and arestart condition is placed in the restart. The fetch and decode stages uses that informationto reset appropriately the associated resources and restart the execution of the instructionat the proper instruction slot.

#include � Restart.hpp �

Public Methods

� Restart (void)

create a new restart.

� Restart (Mtx � mtx)

create a new restart with a contextParameters:

mtx the architectural context.

� void reset (void)

reset this restart.

� virtual void flush (void)=0

flush all resource.

� void report (void) const

report this resource.

� virtual void bind (Runnable � pipe, class Env � env)

bind the pipeline with this restart engineParameters:

pipe the pipeline to bindenv the resource environment.

� virtual bool getsrlz (void) constReturns:

the serialization restart flag.

� virtual bool isvalid (const t octa iip, const long slot) const

check if an instruction is validParameters:

iip the instruction ip to checkslot the slot to check.

� virtual bool check (const t octa iip, const long slot)

check if an instruction must be cancelled and resetParameters:

iip the instruction ip to checkslot the slot to check.

� virtual void pfdef (void)

flush everything by default.

Page 249:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.110. IATO::RESTART CLASS REFERENCE 239

� virtual void pflcl (void)

flush the pipe and restart with local conditions.

� virtual void pfstd (const t octa ip, const long slot)

flush the pipe with a standard restart conditionParameters:

ip the offending ipslot the offending slot.

� virtual void pfsrl (const t octa ip, const long slot)

flush the pipe with a serialization conditionParameters:

ip the offending ipslot the offending slot.

� virtual void pfnxt (const t octa ip, const long slot)

flush the pipe with a next restart conditionParameters:

ip the offending ipslot the offending slot.

Protected Attributes

� bool d ipfr

the instruction restart flag.

� bool d srlz

the pre-serialization flag.

� t octa d rip

the restart ip.

� long d slot

the restart slot.

� Runnable � p pipe

the pipeline to flush.

� Register � p rbk

the register bank.

0.110.1 Detailed Description

The Restart (p. 238) class is a special class designed to act as a pipeline restart undercertain circumstances. When a pipeline flush request occurs, all stages are flushed and arestart condition is placed in the restart. The fetch and decode stages uses that informationto reset appropriately the associated resources and restart the execution of the instructionat the proper instruction slot.

The documentation for this class was generated from the following file:

Page 250:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

240

� Restart.hpp

Page 251:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.111. IATO::ROB CLASS REFERENCE 241

0.111 iato::Rob Class Reference

The Rob (p. 241) class implements a reorder buffer as a fifo. The rob is used to retireinstruction in order and process interrupt. This rob implementation is instruction based.Using an instruction based rob simplifies the architecture, since there is no need to handleMLX bundles as well as implied dependencies. The interrupt processing is also simplified.The entry allocation is on the other end complex.

#include � Rob.hpp �

Public Methods

� Rob (void)

create a new rob.

� Rob (Mtx � mtx)

create a new rob with a contextParameters:

mtx the architectural context.

��� Rob (void)

destroy this rob.

� void reset (void)

reset this rob.

� void report (void) const

report this resource.

� bool isempty (void) constReturns:

true if the rob is empty.

� bool isfull (void) constReturns:

true if the rob is full.

� bool isvalid (const long ridx) constReturns:

true if the rob entry is valid.

� bool isvalid (void) constReturns:

true if the latest rob entry is valid.

� bool ispop (void) constReturns:

true if the latest rob entry is valid.

� bool issrlz (void) constReturns:

true if the latest rob entry is a serialization.

Page 252:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

242

� bool isnop (void) constReturns:

true if the latest rob entry is a nop.

� bool isintr (void) constReturns:

true if the latest rob entry is an interrupt.

� bool iscancel (void) constReturns:

true if the latest rob entry has been cancelled.

� void alloc (const t octa ip, const long slot, const bool srlz, const bool nopb)

allocate a serialize rob entry with an ip and a slotParameters:

ip the ip to restartslot the slot to restartsrlz the serialize bitnopb the nop bit.

� long alloc (const Instr &inst, const long imob, const long iiib)

allocate a new rob entryParameters:

inst the instructionimob the memory ordering buffer indexiiib the instruction interrupt buffer index.

� long alloc (const Interrupt &vi)

allocate a new rob entry with an interruptParameters:

vi the virtual interrupt.

� long pop (void)Returns:

the latest irb and clean rob.

� void spop (void)

pop the latest serialize rob entry.

� void npop (void)

pop the latest nop rob entry.

� Interrupt ipop (void)Returns:

the latest interrupt and clean rob.

� t octa getiip (void) constReturns:

the latest instruction ip.

� long getslot (void) constReturns:

the latest instruction slot.

Page 253:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.111. IATO::ROB CLASS REFERENCE 243

� long getimob (void) constReturns:

the latest memory ordering index.

� long getiiib (void) constReturns:

the latest iib index.

� bool getbsip (void) constReturns:

the latest sip speculative bit.

� void setexe (const long ridx, const bool flag)

set the execute flagParameters:

ridx the rob indexflag the flag to set.

� void setcnlf (const long ridx, const bool flag)

set the cancel flagParameters:

ridx the rob indexflag the flag to set.

� void setirb (const long ridx, const long index)

set the irb index entryParameters:

ridx the rob indexindex the irb index.

� void setintr (const long ridx, const Interrupt &vi)

set the interrupt entryParameters:

ridx the rob indexvi the virtual interrupt.

� void setbsip (const long ridx, const bool bsip)

set the sip speculative bitParameters:

ridx the rob indexbsip the sip speculative bit.

0.111.1 Detailed Description

The Rob (p. 241) class implements a reorder buffer as a fifo. The rob is used to retireinstruction in order and process interrupt. This rob implementation is instruction based.Using an instruction based rob simplifies the architecture, since there is no need to handleMLX bundles as well as implied dependencies. The interrupt processing is also simplified.The entry allocation is on the other end complex.

The documentation for this class was generated from the following file:

� Rob.hpp

Page 254:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

244

0.112 iato::RseLogic Class Reference

The RseLogic (p. 244) class is the rse control logic with speculative support. The logic op-erates in a predict/update mode. If the logic is associated with a branch prediction system,such logic is updated according to the speculation status. The rse logic also implements arse stack buffer that hold the rse state in association with predicted branches.

#include � RseLogic.hpp �

Public Methods

� RseLogic (void)

create a default rse logic.

� RseLogic (Mtx � mtx)

create a rse logic with a contextParameters:

mtx the architectural context.

� void reset (void)

reset this rse logic.

� void flush (void)

flush this rse logic.

� void report (void) const

report this resource.

� void setsst (const State &state)

set the speculative rse state by stateParameters:

state the state to set.

� State getsst (void) constReturns:

the speculative rse state.

� void rename (Instr &inst) const

rename an instruction with the speculative stateParameters:

inst the instruction to rename.

� void preset (const Instr &inst)

preset the rse state with an instructionParameters:

inst the instruction used to preset.

� void aftset (const Instr &inst)

after set the rse state with an instructionParameters:

inst the instruction used to preset.

Page 255:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.112. IATO::RSELOGIC CLASS REFERENCE 245

� void update (const Result &resl)

update the rse state with a resultParameters:

resl the result used to update.

0.112.1 Detailed Description

The RseLogic (p. 244) class is the rse control logic with speculative support. The logic op-erates in a predict/update mode. If the logic is associated with a branch prediction system,such logic is updated according to the speculation status. The rse logic also implements arse stack buffer that hold the rse state in association with predicted branches.

The documentation for this class was generated from the following file:

� RseLogic.hpp

Page 256:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

246

0.113 iato::RseStack Class Reference

The RseStack (p. 246) class implements a finite stack of rse state. When a rse dependantbranch is made, the rse state is placed on the stack or reterived from it. The rse statecontains mostly the cfm register that defines the state of the renaming circuitry. The rsestack is an essential piece of code that permits to operate with a branch predictor.

#include � RseStack.hpp �

Public Methods

� RseStack (void)

create a default rse stack.

� RseStack (Mtx � mtx)

create a new rse stack with a contextParameters:

mtx the architectural context.

��� RseStack (void)

destroy this rse stack.

� void reset (void)

reset this rse stack.

� void report (void) const

report this resource.

� bool isempty (void) const

Returns:true if the stack is empty.

� bool isfull (void) const

Returns:true if the stack is full.

� void push (const Rse::State &state)

push a new rse state on the stackParameters:

state the state to push.

� Rse::State pop (void)

Returns:the latest irb and clean rob.

� void shift (void)

shift the stack by one element.

Page 257:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.113. IATO::RSESTACK CLASS REFERENCE 247

0.113.1 Detailed Description

The RseStack (p. 246) class implements a finite stack of rse state. When a rse dependantbranch is made, the rse state is placed on the stack or reterived from it. The rse statecontains mostly the cfm register that defines the state of the renaming circuitry. The rsestack is an essential piece of code that permits to operate with a branch predictor.

The documentation for this class was generated from the following file:

� RseStack.hpp

Page 258:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

248

0.114 iato::Runnable Class Reference

The Runnable (p. 248) class is an abstract class that defines the ”run” and ”flush” methods.The run method executes virtually one cycle of the runnbale object. The runnable interfacecan be reset and flushed. The difference is interface dependent.

#include � Runnable.hpp �

Inherited by iato::Delayable, iato::Hma, iato::Pipeline, and iato::System.

Public Methods

� Runnable (void)

create a default runnable.

� Runnable (const string &name)

create a new runnable by nameParameters:

name the runnable resource name.

� virtual void flush (void)=0

flush this runnable interface.

� virtual void run (void)=0

run this runnable object.

0.114.1 Detailed Description

The Runnable (p. 248) class is an abstract class that defines the ”run” and ”flush” methods.The run method executes virtually one cycle of the runnbale object. The runnable interfacecan be reset and flushed. The difference is interface dependent.

The documentation for this class was generated from the following file:

� Runnable.hpp

Page 259:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.115. IATO::SCOREBOARD CLASS REFERENCE 249

0.115 iato::Scoreboard Class Reference

The Scoreboard (p. 249) class implements a register scoreboarding facility. The primaryscoreboard structure is the instruction list with their associated states. Instruction are placedin-order in the list ands their state is updated by the appropriate stages. For a given register, indicated by its rid, the scoreboard structure list the registers those value are produced bymulticycle instruction. Such register are those with L1D misses as well as floating or multimedia instructions.

#include � Scoreboard.hpp �

Public Types

� enum t state

the instruction scoreboard states.

Public Methods

� Scoreboard (void)

create a new scoreboard.

� Scoreboard (Mtx � mtx)

create a new scoreboard with a contextParameters:

mtx the architectural context.

� Scoreboard (Mtx � mtx, const string &name)

create a new scoreboard with a context and a nameParameters:

mtx the architectural contextname the resource name.

��� Scoreboard (void)

destroy this scoreboard.

� void reset (void)

reset this scoreboard.

� void report (void) const

report this resource.

� long alloc (const Ssi &ssi)

allocate an instruction in the scoreboard.

� void alloc (const Interrupt &svi)

allocate an interrupt in the scoreboard.

� void clean (void)

clean the scoreboard with write-backed instructions.

Page 260:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

250

� void setstate (const long ridx, t state state)

set the instruction stateParameters:

ridx the scoreboard indexstate the instruction state to set.

� void setstate (const Ssi &ssi, t state state)

set the instruction stateParameters:

ssi the instruction to markstate the instruction state to set.

� bool getstate (const long ridx, t state state) const

Returns:the scoreboard instruction state by index.

� bool getstate (const Ssi &ssi, t state state) const

Returns:the scoreboard instruction state by instruction.

� void retire (const Ssi &ssi)

retire an instruction and clean the scoreboardParameters:

ssi the instruction to mark.

� bool ismarked (const Rid &rid) const

Returns:true if a register is marked.

� void mark (const Rid &rid, const bool flag)

set a register by ridParameters:

rid the register id to setflag the register flag to set.

� bool ishazard (const Ssi &ssi) const

Returns:true if the instruction presents a hazard.

� bool isholding (const Ssi &ssi) const

Returns:true if an instruction is holding.

Static Public Attributes

� const long MAX STATES = 7

max number of instruction states.

Page 261:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.115. IATO::SCOREBOARD CLASS REFERENCE 251

0.115.1 Detailed Description

The Scoreboard (p. 249) class implements a register scoreboarding facility. The primaryscoreboard structure is the instruction list with their associated states. Instruction are placedin-order in the list ands their state is updated by the appropriate stages. For a given register, indicated by its rid, the scoreboard structure list the registers those value are produced bymulticycle instruction. Such register are those with L1D misses as well as floating or multimedia instructions.

The documentation for this class was generated from the following file:

� Scoreboard.hpp

Page 262:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

252

0.116 iato::Sct Class Reference

The Sct (p. 252) class is a two bit saturating counter used within prediction systems. The’update’ method can be used to adjust the counter value while the ’istrue’ method returnstrue if the counter is in a true state.

#include � Sct.hpp �

Public Types

� enum t sct

the two bits states.

Public Methods

� Sct (void)

create a default counter.

� Sct (t sct state)

create a counter with an initial stateParameters:

state the initial state.

� Sct (const Sct &that)

copy construct this counterParameters:

that the counter to copy.

� void reset (void)

reset this counter.

� Sct & operator= (const Sct &that)

assign a counter to this oneParameters:

that the counter to assign.

� bool isstrong (void) constReturns:

true if the state is strong.

� bool isweak (void) constReturns:

true if the state is weak.

� bool istrue (void) constReturns:

true if the state is true.

� void update (const bool flag)

update a counter with a flag

Page 263:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.116. IATO::SCT CLASS REFERENCE 253

Parameters:flag the update flag.

0.116.1 Detailed Description

The Sct (p. 252) class is a two bit saturating counter used within prediction systems. The’update’ method can be used to adjust the counter value while the ’istrue’ method returnstrue if the counter is in a true state.

The documentation for this class was generated from the following file:

� Sct.hpp

Page 264:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

254

0.117 iato::Slot Class Reference

the Slot (p. 254) class is an issue port slot. It is used to store a particular instruction beeingrouted. The slot object holds the slot type as well as the slot index.

#include � Slot.hpp �

Public Methods

� Slot (t unit unit)

create a slot by unitParameters:

unit the slot unit type.

� Slot (t unit unit, const long spos)

create a slot by unit and positionParameters:

unit the slot unit typespos the slot position.

� Slot (const Slot &that)

copy construct this slotParameters:

that the slot to copy.

� void reset (void)

reset this slot.

� Slot & operator= (const Slot &that)

assign a slot to this oneParameters:

that the slot to assign.

� bool isfree (void) constReturns:

true if the slot is free.

� t unit getunit (void) constReturns:

the slot unit.

� long getspos (void) constReturns:

the slot position.

� void setspos (const long spos)

set the slot positionParameters:

spos the slot position to set.

� Ssi getinst (void) constReturns:

the slot instruction.

Page 265:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.117. IATO::SLOT CLASS REFERENCE 255

� void setinst (const Ssi &ssi)

set the slot instructionParameters:

ssi the instruction to set.

0.117.1 Detailed Description

the Slot (p. 254) class is an issue port slot. It is used to store a particular instruction beeingrouted. The slot object holds the slot type as well as the slot index.

The documentation for this class was generated from the following file:

� Slot.hpp

Page 266:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

256

0.118 iato::Ssi Class Reference

The Ssi (p. 256) class is the sta=tically scheduled instruction that is derived from the isainstruction class. The class holds additional instruction information that are used in a spec-ulative environment. One particular important information is the speculative cfm value thatis vaed in the instruction.

#include � Ssi.hpp �

Inherited by iato::Dsi.

Public Methods

� Ssi (void)

create a default ssi.

� Ssi (const Instr &inst)

create a ssi from an instructionParameters:

inst the instruction to use.

� Ssi (const Ssi &that)

copy construct this ssiParameters:

that the ssi to copy.

� Ssi & operator= (const Ssi &that)

assign a ssi to this oneParameters:

that the ssi to assign.

� Ssi & operator= (const Instr &that)

assign an instruction to this ssiParameters:

that the instruction to assign.

� void reset (void)

reset this ssi.

� void setrix (const long index)

set the reorder indexParameters:

index the reorder index.

� long getrix (void) constReturns:

the reorder index.

� void setiib (const long index)

set the iib indexParameters:

index the iib index.

Page 267:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.118. IATO::SSI CLASS REFERENCE 257

� long getiib (void) constReturns:

the iib index.

� void setmob (const long index)

set the mob indexParameters:

index the mob index.

� long getmob (void) constReturns:

the mob index.

� void setcnlf (const bool cnlf)

set the instruction cancellation flagParameters:

cnlf the cancel flag to set.

� void setcnlf (const Rid &rid, const bool cnlf)

set the instruction cancellation flag by ridParameters:

rid the rid to use for cancellationcnlf the cancel flag to set.

� bool getcnlf (void) constReturns:

the cancellation flag.

� void seticfm (const Cfm &cfm)

set the instruction cfmParameters:

cfm the cfm to set.

� Cfm geticfm (void) constReturns:

the instruction cfm.

� void setscfm (const Cfm &cfm)

set the speculative cfmParameters:

cfm the cfm to set.

� Cfm getscfm (void) constReturns:

the speculative cfm.

� void setppfl (const bool ppfl)

set the predicate prediction flagParameters:

ppfl the prediction flag to set.

� bool getppfl (void) constReturns:

the predicate prediction flag.

Page 268:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

258

Protected Attributes

� long d ridx

the reorder index.

� long d iidx

the iib index.

� long d midx

the mob index.

� Cfm d icfm

the instruction cfm.

� Cfm d scfm

the speculative cfm.

� bool d cnlf

the cancellation flag.

� bool d ppfl

the predicate prediction flag.

0.118.1 Detailed Description

The Ssi (p. 256) class is the sta=tically scheduled instruction that is derived from the isainstruction class. The class holds additional instruction information that are used in a spec-ulative environment. One particular important information is the speculative cfm value thatis vaed in the instruction.

The documentation for this class was generated from the following file:

� Ssi.hpp

Page 269:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.119. IATO::STAGE CLASS REFERENCE 259

0.119 iato::Stage Class Reference

The Stage (p. 259) class is an abstract class that models a pipeline stage. At construction astage uses a context object to configure itself. Once all stages have been created, they canbe bounded together with the ’bind’ method. The bind method uses an environment objectwhich among other things holds the global resources of the processor. A stage is definedwith a name. A hold bit also indicates if a stage has been put on hold by another stage.Pipeline (p. 225) stages are linked together in the mean of the previous and next stage.

#include � Stage.hpp �

Inherits iato::Delayable.

Inherited by iato::Pipelane.

Public Methods

� Stage (Mtx � mtx, const string &name)

create a new stage with context by nameParameters:

mtx the architectural contextname the stage name.

� void reset (void)

reset this stage.

� void flush (void)

flush this stage.

� void run (void)

run this stage.

� virtual bool ishalted (void) const

return true if the stage is halted.

� virtual bool isholding (void) constReturns:

the holding bit status.

� virtual void setprev (Env � env, Stage � stg)

set the previous stageParameters:

env the execution environmentstg the previous stage to set.

� virtual void setnext (Env � env, Stage � stg)

set the next stageParameters:

env the execution environmentstg the previous stage to set.

� virtual void bind (Env � env, Stage � pstg, Stage � nstg)

bind this stage with an execution environment

Page 270:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

260

Parameters:env the execution environmentpstg the previous stagenstg the next stage.

Protected Attributes

� bool d halt

the halt bit.

� Stage � p pstg

the previous stage.

� Stage � p nstg

the next stage.

0.119.1 Detailed Description

The Stage (p. 259) class is an abstract class that models a pipeline stage. At construction astage uses a context object to configure itself. Once all stages have been created, they canbe bounded together with the ’bind’ method. The bind method uses an environment objectwhich among other things holds the global resources of the processor. A stage is definedwith a name. A hold bit also indicates if a stage has been put on hold by another stage.Pipeline (p. 225) stages are linked together in the mean of the previous and next stage.

The documentation for this class was generated from the following file:

� Stage.hpp

Page 271:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.120. IATO::STATION CLASS REFERENCE 261

0.120 iato::Station Class Reference

The Station (p. 261) class is a resource that is designed to act as a reservation station table.A reservation station is one entry in the table. The sole purpose of a resrvationn station isto park instruction waiting for their operands. When the operands are ready, the instructionis waked-up and delivered to the next stage. The complete administration task is actuallyquite complexe. First, a valid bit indicates if the entry is valid. Second a wake-up bitindicates if the instruction has been waked-up. The instruction remains in the station untilit has been write-backed or cancelled by local or global flush. The station also maintains apriority table that is used by the scheduler to select the ready instructions.

#include � Station.hpp �

Public Methods

� Station (const t unit unit)

create a station table by typeParameters:

unit the station unit type.

� Station (Mtx � mtx, const t unit unit)

create a station table by type and contextParameters:

mtx the architectural contextunit the station unit type.

� Station (Mtx � mtx, const t unit unit, const string &name)

create a station table by type and context and nameParameters:

mtx the architectural contextunit the station unit typename the station name.

��� Station (void)

destroy this station table.

� void reset (void)

reset the station table.

� void report (void) const

report this resource.

� void setgcs (const long index)

set the station gcs indexParameters:

index the index to set.

� long getgcs (void) constReturns:

the station gcs index.

� bool isfull (void) const

Page 272:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

262

Returns:true if the table is full.

� bool isempty (void) constReturns:

true if the table is empty.

� long alloc (const Dsi &dsi)

alloc a new entry in the table by instructionParameters:

dsi the instruction to insert.

� void clear (const long index)

clear a station entry by indexParameters:

index the station index.

� void setrdy (const Rid &rid)

set the station ready bit by ridParameters:

rid the rid to compare.

� Dsi getrdy (void)Returns:

the next instruction ready for execution.

� void setcnl (const Rid &rid, const bool value)

mark instruction cancelled by rid and valueParameters:

rid the rid to checkvalue the cancel flag.

� void resched (const long index)

reschedule an instruction by indexParameters:

index the instruction station index.

� void setpnrd (const long index, const bool pnrd)

mark the predicate not ready flagParameters:

index the instruction station indexpnrd the predicate not ready flag.

� void dump (void) const

dump the station content.

0.120.1 Detailed Description

The Station (p. 261) class is a resource that is designed to act as a reservation station table.A reservation station is one entry in the table. The sole purpose of a resrvationn station isto park instruction waiting for their operands. When the operands are ready, the instructionis waked-up and delivered to the next stage. The complete administration task is actually

Page 273:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.120. IATO::STATION CLASS REFERENCE 263

quite complexe. First, a valid bit indicates if the entry is valid. Second a wake-up bitindicates if the instruction has been waked-up. The instruction remains in the station untilit has been write-backed or cancelled by local or global flush. The station also maintains apriority table that is used by the scheduler to select the ready instructions.

The documentation for this class was generated from the following file:

� Station.hpp

Page 274:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

264

0.121 iato::Stb Class Reference

The Stb (p. 264) class is the store buffer. The store buffer is a queue of pair (address/value)and a size. Entries are added in order in the buffer. The store buffer is primarily used at thecommit stage to perform the write operations.

#include � Stb.hpp �

Public Methods

� Stb (void)

create a new stb.

� Stb (Mtx � mtx)

create a new stb with a contextParameters:

mtx the architectural context.

��� Stb (void)

destroy this stb.

� void reset (void)

reset this stb.

� void report (void) const

report this resource.

� void bind (Memory � mem)

bind a bypass memory to this bufferParameters:

mem the bypass memory to bind.

� bool isempty (void) const

Returns:true if the stb is empty.

� void push (t mreq type, const t octa addr, const t octa data)

push a store request in the store bufferParameters:

type the request typeaddr the request addressdata the request data.

� void push (t mreq type, const t octa addr, const t real &data)

push a store request in the store bufferParameters:

type the request typeaddr the request addressdata the request data.

Page 275:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.121. IATO::STB CLASS REFERENCE 265

0.121.1 Detailed Description

The Stb (p. 264) class is the store buffer. The store buffer is a queue of pair (address/value)and a size. Entries are added in order in the buffer. The store buffer is primarily used at thecommit stage to perform the write operations.

The documentation for this class was generated from the following file:

� Stb.hpp

Page 276:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

266

0.122 iato::System Class Reference

The System (p. 266) class is the memory system interface. The class is used to bind thesystem memory as well as other interface that might needed during the course of the sim-ulation. With a program name, a program image is created and associated with variousmemory unit. The binding between an instruction memory and a program image is doneduring the simulation binding process.

#include � System.hpp �

Inherits iato::Runnable.

Public Methods

� System (Mtx � mtx, const string &name)

create a new system interface by context and program nameParameters:

mtx the architectural contextname the program name.

� System (Mtx � mtx, const string &name, const vector � string � &argv)

create a new system interface by context, program name and argumentsParameters:

mtx the architectural contextname the program nameargv the program arguments.

��� System (void)

destroy this system interface.

� void reset (void)

reset this system interface.

� void flush (void)

flsuh this system interface.

� void run (void)

run this system interface.

� void report (void) const

report some system information.

� Syscall � getsci (void) constReturns:

the system call plugin.

� Hma � gethma (void) constReturns:

the memory model architecture.

� t octa getentry (void) constReturns:

the entry point.

Page 277:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.122. IATO::SYSTEM CLASS REFERENCE 267

� t octa getstkva (void) constReturns:

the top of stack.

� t octa getbspva (void) constReturns:

the backing store base.

� Checker � getchecker (void) constReturns:

the elf image checker.

0.122.1 Detailed Description

The System (p. 266) class is the memory system interface. The class is used to bind thesystem memory as well as other interface that might needed during the course of the sim-ulation. With a program name, a program image is created and associated with variousmemory unit. The binding between an instruction memory and a program image is doneduring the simulation binding process.

The documentation for this class was generated from the following file:

� System.hpp

Page 278:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

268

0.123 iato::Trb Class Reference

The Trb (p. 268) class is the translation register bank class definition. For each registertype a translation bank is created with a size equal to the number of physical registers.Each register provides a direct translation to the physical register. A valid bit, associatedwith the register indicates if that translation register is valid. At reset, the default translationis initialized with a mapping corresponding to the logical register definition.

#include � Trb.hpp �

Public Methods

� Trb (void)

create a default translation bank.

� Trb (Mtx � mtx)

create a translation bank by contextParameters:

mtx the architectural context.

� Trb (Mtx � mtx, const string &name)

create a translation bank by context and nameParameters:

mtx the architectural contextname the rat resource name.

��� Trb (void)

destroy this bank.

� void reset (void)

reset this bank.

� void report (void) const

report this resource.

� bool isready (const long vnum) constReturns:

true if a trb entry is ready.

� bool gettbit (const long vnum) constReturns:

true if a translation bit is set.

� void settnum (const long vnum, const long tnum, const bool rbit)

set the trb translation numberParameters:

vnum the virtual numbertnum the translation numberrbit the ready bit.

� long gettnum (const long vnum) constReturns:

the translation number.

Page 279:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.123. IATO::TRB CLASS REFERENCE 269

� long initial (void)

allocate an initial translation.

� long alloc (void)Returns:

the index of a new allocated trb entry.

� long clean (const long vnum, const long onum)

clean a trb entry by number and return the old translationParameters:

vnum the virtual numberonum the old virtual number.

� void cancel (const long vnum, const long onum)

cancel a trb translation by forcing the ready bitParameters:

vnum the virtual numberonum the old virtual number.

� void setrdy (const long vnum)

force the ready bit by indexParameters:

vnum the virtual number.

0.123.1 Detailed Description

The Trb (p. 268) class is the translation register bank class definition. For each registertype a translation bank is created with a size equal to the number of physical registers.Each register provides a direct translation to the physical register. A valid bit, associatedwith the register indicates if that translation register is valid. At reset, the default translationis initialized with a mapping corresponding to the logical register definition.

The documentation for this class was generated from the following file:

� Trb.hpp

Page 280:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

270

0.124 iato::Urb Class Reference

The Urb (p. 270) class is the universal register bank class definition. An urb entry holds auvr value and a valid bit. The urb is used to store in-flight instruction register result beforethe value is commited into the logical register file. The size of the urb is an architecturalparameter.

#include � Urb.hpp �

Public Methods

� Urb (void)

create a default universal bank.

� Urb (Mtx � mtx)

create a universal bank by contextParameters:

mtx the architectural context.

� Urb (Mtx � mtx, const string &name)

create a universal bank by context and nameParameters:

mtx the architectural contextname the rat resource name.

��� Urb (void)

destroy this bank.

� void reset (void)

reset this bank.

� void report (void) const

report this resource.

� void setuvr (const long rnum, const Uvr &uvr)

set the urb entry by index and valueParameters:

rnum the register numberuvr the uvr value to set.

� Uvr getuvr (const long rnum) constReturns:

the uvr value by index.

� long alloc (void)Returns:

the index of a new allocated urb entry.

� void clean (const long rnum)

clean an urb entry param rnum the register to clean.

Page 281:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.124. IATO::URB CLASS REFERENCE 271

0.124.1 Detailed Description

The Urb (p. 270) class is the universal register bank class definition. An urb entry holds auvr value and a valid bit. The urb is used to store in-flight instruction register result beforethe value is commited into the logical register file. The size of the urb is an architecturalparameter.

The documentation for this class was generated from the following file:

� Urb.hpp

Page 282:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

272

0.125 iato::Urf Class Reference

The Urf (p. 272) class is the universal register file class definition. The Urf (p. 272) isbuilt with a translation register bank (trb), the universal register bank (urb), and the registeralias table (rat). The main reason to group these three resources into one, is to simplifythe operand evalution and the result update as well as the speculative flush of the renaminglogic. Each individual resources can be accessed by getting them.

#include � Urf.hpp �

Public Methods

� Urf (void)

create a default urf.

� Urf (Mtx � mtx)

create a urf by contextParameters:

mtx the architectural context.

� Urf (Mtx � mtx, const string &name)

create a urf by context and nameParameters:

mtx the architectural contextname the rat resource name.

��� Urf (void)

destroy this urf.

� void reset (void)

reset this urf.

� void report (void) const

report this resource.

� void flush (void)

flush this urf.

� Rat � getrat (void) constReturns:

the associated rat.

� Trb � gettrb (void) constReturns:

the associated trb.

� Urb � geturb (void) constReturns:

the associated trb.

� bool isready (const Rid &rid) const

Page 283:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

0.125. IATO::URF CLASS REFERENCE 273

Returns:true if a trb entry is ready.

� bool isready (const Operand &oprd) constReturns:

true if an operand is ready.

� Uvr eval (const Rid &rid) const

evaluate a rid in the urfParameters:

rid the rid to evaluate.

� void eval (Operand &oprd) const

evaluate an operand in the urfParameters:

oprd the operand to evaluate.

� void reroute (const Rid &rid)

reroute a rid in the urfParameters:

rid the rid to reroute.

� void reroute (const Result &resl)

reroute all result registersParameters:

resl the result used for rerouting.

� void update (const Result &resl)

update the urf with a resultParameters:

resl the result used for update.

� void clean (const Result &resl)

clean the urf with a resultParameters:

resl the result used for cleanup.

� void cancel (const Result &resl)

cancel the urf with a resultParameters:

resl the result used for update.

0.125.1 Detailed Description

The Urf (p. 272) class is the universal register file class definition. The Urf (p. 272) isbuilt with a translation register bank (trb), the universal register bank (urb), and the registeralias table (rat). The main reason to group these three resources into one, is to simplifythe operand evalution and the result update as well as the speculative flush of the renaminglogic. Each individual resources can be accessed by getting them.

The documentation for this class was generated from the following file:

� Urf.hpp

Page 284:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

274

0.126 iato::Weakable Class Reference

The Weakable (p. 274) class is an abstract class that defines the ”notify” method. The’notify’ method is used by an object to request an immediate action. Most likely, the notifymethod will invoke the activate method, although the notify method has an argument thatis the caller.

#include � Weakable.hpp �

Inherits iato::Delayable.

Public Methods

� Weakable (void)

create a default weakable.

� Weakable (const string &name)

create a new weakable by nameParameters:

name the weakable resource name.

� virtual void notify (Resource � res)=0

notify this weakable interfaceParameters:

res the resource notifier.

0.126.1 Detailed Description

The Weakable (p. 274) class is an abstract class that defines the ”notify” method. The’notify’ method is used by an object to request an immediate action. Most likely, the notifymethod will invoke the activate method, although the notify method has an argument thatis the caller.

The documentation for this class was generated from the following file:

� Weakable.hpp

Page 285:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

Index

� Alatiato::Alat, 9

� Bdbiato::Bdb, 159

� Bimodaliato::Bimodal, 161

� Bpeiato::Bpe, 163

� Btbiato::Btb, 169

� Bundleiato::Bundle, 12

� CacheBlockiato::CacheBlock, 173

� CacheDirectiato::CacheDirect, 175

� Checkeriato::Checker, 19

� Ctxiato::Ctx, 20

� Eiqiato::Eiq, 186

� ElfImageiato::ElfImage, 124

� ElfInterpiato::ElfInterp, 127

� ElfMemoryiato::ElfMemory, 133

� ElfTableiato::ElfTable, 140

� Enviato::Env, 23

� Exceptioniato::Exception, 24

� Filteriato::Filter, 28

� Gcsiato::Gcs, 188

� Ghppiato::Ghpp, 190

� Gshareiato::Gshare, 192

� Hyppiato::Hypp, 198

� Iib

iato::Iib, 200� Ipb

iato::Ipb, 202� Irb

iato::Irb, 204� Irt

iato::Irt, 44� Lru

iato::Lru, 46� MemLogic

iato::MemLogic, 47� Memory

iato::Memory, 48� Mob

iato::Mob, 208� Mta

iato::Mta, 212� Perceptron

iato::Perceptron, 215� Phpp

iato::Phpp, 217� Pht

iato::Pht, 219� Pimodal

iato::Pimodal, 221� Pipelane

iato::Pipelane, 223� Pipeline

iato::Pipeline, 225� Ppag

iato::Ppag, 227� Pshare

iato::Pshare, 232� Rat

iato::Rat, 234� Reader

iato::Tracer::Reader, 108� Register

iato::Register, 71� Resource

iato::Resource, 74� Rob

iato::Rob, 241� RseStack

iato::RseStack, 246

275

Page 286:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

276 INDEX

� Scoreboardiato::Scoreboard, 249

� Segmentiato::Segment, 92

� Statiato::Stat, 94

� Stationiato::Station, 261

� Stbiato::Stb, 264

� Systemiato::System, 266

� Traceriato::Tracer, 106

� Trbiato::Trb, 268

� Urbiato::Urb, 270

� Urfiato::Urf, 272

abortiato::Exception, 24

activateiato::Delayable, 176iato::Pipelane, 223

addiato::Alat, 9iato::Bpn, 165iato::Checker, 19iato::ElfLoad, 131iato::ElfMemory, 133iato::ElfTable, 140iato::ElfText, 142iato::Env, 23iato::Gcs, 188iato::Ipb, 202iato::Pipelane, 224iato::Pipeline, 226iato::ReqBuf, 236iato::Tracer, 107

addbndliato::Stat, 94

addinstiato::Stat, 94, 95

addscniato::ElfText, 142

addsegiato::ElfBrk, 119iato::ElfLoad, 131

addtypeiato::Tracer, 106

aftsetiato::Rse, 88

iato::RseLogic, 244Alat

iato::Alat, 9alloc

iato::Iib, 200iato::Irb, 204iato::Mob, 208iato::Rob, 242iato::Rse::State, 90iato::Scoreboard, 249iato::Station, 262iato::Trb, 269iato::Urb, 270

applyiato::Plugin, 62iato::Syscall, 149

backiato::Bdb, 159

Bdbiato::Bdb, 159

beginiato::ElfSection, 135

Bimodaliato::Bimodal, 161

bindiato::Detect, 178iato::Disperse, 181iato::ElfInterp, 127iato::Irt, 45iato::MemLogic, 47iato::Mli, 206iato::Mpr, 211iato::Mta, 212iato::Pipelane, 224iato::Pipeline, 226iato::ReqBuf, 236iato::Restart, 238iato::Stage, 259iato::Stb, 264

BN BxBxBsiato::Bundle, 15

BN BxBxBxiato::Bundle, 15

BN MAXTPLiato::Bundle, 15

BN MsMxIsiato::Bundle, 14

BN MsMxIxiato::Bundle, 14

BN MxBxBsiato::Bundle, 15

BN MxBxBxiato::Bundle, 15

Page 287:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

INDEX 277

BN MxFxBsiato::Bundle, 15

BN MxFxBxiato::Bundle, 15

BN MxFxIsiato::Bundle, 14

BN MxFxIxiato::Bundle, 14

BN MxIsIsiato::Bundle, 14

BN MxIsIxiato::Bundle, 14

BN MxIxBsiato::Bundle, 15

BN MxIxBxiato::Bundle, 15

BN MxIxIsiato::Bundle, 14

BN MxIxIxiato::Bundle, 14

BN MxLxXsiato::Bundle, 14

BN MxLxXxiato::Bundle, 14

BN MxMxBsiato::Bundle, 15

BN MxMxBxiato::Bundle, 15

BN MxMxFsiato::Bundle, 15

BN MxMxFxiato::Bundle, 14

BN MxMxIsiato::Bundle, 14

BN MxMxIxiato::Bundle, 14

Bpeiato::Bpe, 163

Bpniato::Bpn, 165

Branchiato::Branch, 167

Btbiato::Btb, 169

Bundleiato::Bundle, 12

Cacheiato::Cache, 171

CacheBlockiato::CacheBlock, 173

CacheDirectiato::CacheDirect, 175

call

iato::Rse::State, 90cancel

iato::Trb, 269iato::Urf, 273

Cfmiato::Cfm, 16

checkiato::Alat, 10iato::Checker, 19iato::Filter, 28iato::Register, 72iato::Restart, 238

Checkeriato::Checker, 19

chkbvaliato::Record, 68

chkcfmiato::Rse::State, 89

chklregiato::Record, 68

chkovaliato::Record, 68

chkpnumiato::Record, 68

chkrvaliato::Record, 68

chksipiato::Detect, 178

chksppiato::Detect, 178

cleaniato::Scoreboard, 249iato::Trb, 269iato::Urb, 270iato::Urf, 273

cleariato::Bpe, 164iato::Bpn, 166iato::Gcs, 188iato::Iib, 200iato::Irb, 204iato::Irt, 44iato::Mob, 208iato::Pipelane, 224iato::Pipeline, 226iato::Station, 262

clrvbitiato::Rid, 82

computeiato::Ghpp, 190iato::Hypp, 198iato::Perceptron, 215iato::Phpp, 217iato::Pimodal, 221

Page 288:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

278 INDEX

iato::Ppag, 227iato::Predicate, 229iato::Pshare, 232

const iteratoriato::ElfSection::const iterator, 136

convertiato::Fpsr, 30iato::t real, 104

Ctxiato::Ctx, 20

d aligniato::Memory, 51

d baseiato::Segment, 93

d bflgiato::Stat, 96

d bhintiato::Instr, 37

d bmapiato::Ctx, 22

d bndliato::Stat, 96

d bphintiato::Instr, 37

d brchiato::Instr, 36

d bunitiato::Instr, 36

d bupdiato::Predicate, 230

d chintiato::Instr, 37

d cnlfiato::Ssi, 258

d codeiato::Instr, 36

d cupdiato::Cache, 172

d cwrtiato::Cache, 172

d dcntiato::Delayable, 176

d dlatiato::Delayable, 176

d emodeiato::Memory, 51

d erdyiato::Rid, 84

d etimiato::Stat, 95

d extdiato::Instr, 36

d funit

iato::Instr, 36d group

iato::Instr, 36d halt

iato::Stage, 260d hmap

iato::Ctx, 22d icfm

iato::Ssi, 258d iflg

iato::Stat, 96d ihint

iato::Instr, 37d iidx

iato::Ssi, 258d iip

iato::Instr, 36d ildb

iato::Instr, 36d immv

iato::Instr, 37d inst

iato::Instr, 36iato::Stat, 96

d ipfriato::Restart, 239

d istbiato::Instr, 36

d leveliato::Cache, 172

d lfhintiato::Instr, 37

d lhintiato::Instr, 37

d lmapiato::Ctx, 22

d lnumiato::Rid, 83

d mbbiato::Hma, 194

d mhintiato::Instr, 37

d midxiato::Ssi, 258

d nameiato::Resource, 75

d nbcniato::Stat, 96

d nbndiato::Stat, 95

d nbpdiato::Stat, 95

d ncaniato::Stat, 96

Page 289:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

INDEX 279

d ncyciato::Stat, 95

d nflgiato::Stat, 96

d ngriato::Rse, 88

d ninsiato::Stat, 95

d npbriato::Stat, 96

d npbsiato::Stat, 96

d nppriato::Stat, 96

d nppsiato::Stat, 96

d nprdiato::Stat, 95

d nrshiato::Stat, 96

d onumiato::Rid, 83

d opcdiato::Instr, 36

d phintiato::Instr, 37

d pnumiato::Rid, 83

d ppfliato::Ssi, 258

d protiato::Memory, 51

d reasoniato::Exception, 25

d ridxiato::Ssi, 258

d ripiato::Restart, 239

d rmapiato::Ctx, 22

d rprdiato::Instr, 37

d rrpmiato::Instr, 37

d rsrciato::Instr, 37

d scfmiato::Ssi, 258

d sfliato::Instr, 36

d shintiato::Instr, 37

d sipiato::Instr, 36

d sizeiato::Segment, 93

d slotiato::Instr, 36iato::Restart, 239

d smapiato::Ctx, 22

d smodeiato::Memory, 51

d srlziato::Restart, 239

d stateiato::Rse, 88

d stimiato::Stat, 95

d stopiato::Instr, 36

d typeiato::Cache, 172iato::Exception, 25iato::Predicate, 230iato::Rid, 83

d validiato::Instr, 36iato::Rid, 83

d vbitiato::Rid, 83

d vmemiato::ElfMemory, 134

d vnumiato::Rid, 83

decodeiato::Instr, 35

Delayableiato::Delayable, 176

depthiato::Pipelane, 224iato::Pipeline, 226

Detectiato::Detect, 178

Disperseiato::Disperse, 180

doubleldiato::t real, 103

doublestiato::t real, 103

Dsiiato::Dsi, 182

dumpiato::Ctx, 20iato::Gcs, 189iato::Station, 262

Eib

Page 290:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

280 INDEX

iato::Eib, 185Eiq

iato::Eiq, 186ElfArgs

iato::ElfArgs, 117ElfBrk

iato::ElfBrk, 119ElfBsa

iato::ElfBsa, 120ElfEnvp

iato::ElfEnvp, 122ElfExec

iato::ElfExec, 123ElfImage

iato::ElfImage, 124ElfInterp

iato::ElfInterp, 127ElfKernel

iato::ElfKernel, 129ElfLoad

iato::ElfLoad, 131ElfMap

iato::ElfMap, 132ElfMemory

iato::ElfMemory, 133ElfSection

iato::ElfSection, 135ElfSegment

iato::ElfSegment, 138ElfStack

iato::ElfStack, 139ElfTable

iato::ElfTable, 140ElfText

iato::ElfText, 142end

iato::ElfSection, 135Env

iato::Env, 23Etx

iato::Etx, 143eval

iato::Bpn, 165iato::Register, 72iato::Urf, 273

exbufiato::Memory, 50

Exceptioniato::Exception, 24

execiato::Aexecute, 7iato::Bexecute, 11iato::Executable, 26iato::Fexecute, 27

iato::Iexecute, 31iato::Mexecute, 53

expandiato::Disperse, 180

extendedldiato::t real, 103

extendedstiato::t real, 103

filliato::Rse::State, 90iato::t real, 103

Filteriato::Filter, 28

filteriato::Filter, 28

findiato::Bpe, 163iato::ElfMemory, 133iato::Ipb, 202

findtopiato::ElfMap, 132

flushiato::Delayable, 176iato::Hma, 194iato::Mpr, 210iato::Pipelane, 223iato::Pipeline, 225iato::ReqBuf, 236iato::Restart, 238iato::Rse, 87iato::RseLogic, 244iato::Runnable, 248iato::Stage, 259iato::System, 266iato::Urf, 272

Fpsriato::Fpsr, 29

FR RRBMiato::Cfm, 17

Gcsiato::Gcs, 188

getiato::Bundle, 13iato::Env, 23iato::Pipeline, 226iato::ReqBuf, 236

getabsiato::t real, 101

getachkiato::Result, 80

getaclriato::Result, 80

Page 291:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

INDEX 281

getaddriato::Mrt, 55iato::Result, 77

getargbiato::ElfTable, 140

getargciato::ElfTable, 140

getargsiato::ElfTable, 140

getargviato::ElfTable, 140

getasetiato::Result, 80

getbaseiato::Segment, 92

getbfldiato::Fpsr, 30

getbicciato::Tracer::Reader, 108

getbipiato::Bundle, 12

getblockiato::Pipelane, 224

getbndiato::Record, 69

getbndliato::Mpr, 210iato::Mta, 213

getbofiato::Rse::State, 89

getbooliato::Ctx, 20

getbrkmiato::ElfExec, 123iato::ElfImage, 126

getbrktaiato::ElfBrk, 119

getbsamiato::ElfExec, 123

getbsasziato::ElfKernel, 129

getbsavaiato::ElfKernel, 129

getbsfldiato::Fpsr, 30

getbsipiato::Rob, 243

getbspvaiato::System, 267

getbunitiato::Instr, 33

getbvaliato::Mrt, 55iato::Operand, 59

iato::Register, 72iato::Result, 78iato::t real, 101iato::Uvr, 111

getbwsziato::Ctx, 21

getbyteiato::Psr, 64

getcfmiato::Cfm, 17iato::Rse::State, 89

getcheckeriato::ElfChecker, 121iato::ElfImage, 126iato::System, 267

getclktkiato::ElfKernel, 129

getcnlfiato::Ssi, 257

getcodeiato::Interrupt, 40

getdataiato::Instr, 33

getdlatiato::Delayable, 176

getdnumiato::Instr, 34

getdstiato::Rpm, 86

geteicciato::Tracer::Reader, 108

getelatiato::Dsi, 183

getentryiato::ElfImage, 125iato::System, 266

geterdyiato::Rid, 82

getexeciato::ElfImage, 126

getexpiato::t real, 102

getextdiato::Instr, 33

getfldiato::Cfm, 17iato::Pfs, 61iato::Psr, 64iato::Umr, 110

getfpcompiato::Instr, 34

getfpsriato::Fpsr, 29

getfunit

Page 292:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

282 INDEX

iato::Instr, 34getgcs

iato::Dsi, 183iato::Station, 261

getgroupiato::Instr, 33

gethighiato::t huge, 98

gethistiato::Htr, 196

gethmaiato::System, 266

gethridiato::Mrt, 56

gethvaliato::Mrt, 56

geticfmiato::Ssi, 257

getiibiato::Ssi, 257

getiiibiato::Rob, 243

getiimiato::Interrupt, 41

getiipiato::Instr, 33iato::Rob, 242

getimageiato::ElfImage, 126

getimmviato::Instr, 34iato::Result, 78

getimobiato::Rob, 243

getinstiato::Interrupt, 40iato::Ipb, 202iato::Irb, 204iato::Record, 69iato::Slot, 254

getinstriato::Bundle, 13

getinterpiato::ElfImage, 125

getinterpnameiato::ElfImage, 125

getintriato::Iib, 200

getiopciato::Instr, 33

getipiato::ElfSection::const iterator, 137iato::Interrupt, 40iato::Ip, 42

getiwsziato::Ctx, 21

getldbiato::Instr, 34

getleveliato::Cache, 171

getllongiato::Ctx, 21

getlnumiato::Rid, 82

getloadiato::ElfImage, 125

getlongiato::Ctx, 21

getlowiato::t huge, 98

getlridiato::Mrt, 56

getlruiato::Lru, 46

getlvaliato::Mrt, 55

getmapiato::Rat, 234

getmapbiato::ElfKernel, 129

getmapmiato::ElfExec, 123

getmemiato::ElfMemory, 134

getmobiato::Ssi, 257

getmodeiato::ElfKernel, 129iato::Irt, 45

getmrtiato::Mpr, 210iato::Result, 80

getmruiato::Lru, 46

getmtaiato::Hma, 194

getnameiato::ElfArgs, 118iato::ElfImage, 124iato::ElfSection, 135iato::Record, 66iato::Resource, 74

getnnopiato::Stat, 95

getonumiato::Rid, 82

getoperiato::Instr, 35

Page 293:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

INDEX 283

getovaliato::Mrt, 55iato::Operand, 59iato::Register, 72iato::Result, 79iato::Uvr, 112

getpcbniato::Perceptron, 215

getpfsiato::Pfs, 60

getpgsziato::ElfKernel, 129

getphnumiato::ElfImage, 125

getplugiato::Irt, 45

getpnrdiato::Dsi, 183

getpnumiato::Instr, 34iato::Rid, 82

getppfliato::Ssi, 257

getprotiato::Memory, 48

getpsriato::Psr, 63

getpthriato::Perceptron, 215

getqvaliato::Mrt, 55

getratiato::Urf, 272

getrcdiato::Tracer::Reader, 108

getrdyiato::Station, 262

getrealiato::Ctx, 21

getreasoniato::Exception, 24

getresliato::Instr, 35iato::Irb, 204

getrfmiato::Rpm, 86

getridiato::Bpe, 163iato::Operand, 58iato::Result, 77

getrimviato::Result, 78

getripiato::Result, 77

getrixiato::Ssi, 256

getropiato::Result, 77

getrrbiato::Cfm, 17

getrrpmiato::Instr, 35

getrschiato::Dsi, 183

getrvaliato::Operand, 59iato::Register, 72iato::Result, 79iato::Uvr, 112

getsbltiato::Mtx, 214

getsbsziato::Mtx, 214

getscfmiato::Ssi, 257

getsciiato::System, 266

getscniato::ElfImage, 125iato::ElfText, 142

getsegiato::ElfLoad, 131

getsfliato::Instr, 33

getsgfdiato::t real, 102

getshnumiato::ElfImage, 125

getsidiato::Dsi, 183

getsigniato::t real, 102

getsipiato::Bundle, 13iato::Instr, 33

getsizeiato::Bdb, 159iato::Btb, 169iato::Htr, 196iato::Ipb, 202iato::Perceptron, 215iato::Pht, 219iato::Rat, 234iato::Segment, 92

getslotiato::Bundle, 13iato::Instr, 33iato::Interrupt, 40

Page 294:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

284 INDEX

iato::Rob, 242getsnum

iato::Instr, 34getspec

iato::Result, 80getspos

iato::Slot, 254getsrc

iato::Rpm, 86getsrlz

iato::Restart, 238getsst

iato::Rse, 87iato::RseLogic, 244

getstateiato::Scoreboard, 250

getstatusiato::KrnExit, 147

getstbiato::Instr, 34

getsteiato::Rse, 87

getstkmiato::ElfExec, 123

getstksziato::ElfKernel, 129

getstkvaiato::ElfKernel, 129iato::ElfStack, 139iato::System, 267

getstopiato::Instr, 33

getstriato::Ctx, 21

getsunitiato::Instr, 34

getswsziato::Ctx, 21

gettagiato::Alat, 9

gettbitiato::Trb, 268

gettipiato::Record, 69

gettmpliato::Bundle, 13

gettnumiato::Rid, 82iato::Trb, 268

gettrbiato::Urf, 272

gettrgiato::Btb, 169

gettusz

iato::Mtx, 214gettxt

iato::ElfImage, 125gettype

iato::Cache, 171iato::Exception, 24iato::Mrt, 54iato::Predicate, 229iato::Record, 66iato::Rid, 82iato::Uvr, 111

getumriato::Psr, 64iato::Umr, 109

getunitiato::Slot, 254

geturbiato::Urf, 272

getuvriato::Bpe, 163iato::Result, 78iato::Urb, 270

getvbitiato::Rid, 82

getvnumiato::Rid, 82

getvsbiato::Bundle, 13

getwbndiato::Perceptron, 215

getwvaliato::Mrt, 55

Ghppiato::Ghpp, 190

GR RRBMiato::Cfm, 17

Gshareiato::Gshare, 192

hashiato::Pht, 219

hdinfoiato::Tracer::Reader, 108

Hmaiato::Hma, 194

Htriato::Htr, 196

HUGE SIZEiato::t huge, 98

Hyppiato::Hypp, 198

iato::Aexecute, 7exec, 7

Page 295:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

INDEX 285

iato::Alat, 9� Alat, 9add, 9Alat, 9check, 10gettag, 9isfull, 9isvalid, 9load, 10memupd, 9remove, 10report, 9reset, 9

iato::Bdb, 158� Bdb, 159back, 159Bdb, 159getsize, 159isempty, 159isfull, 159isthr, 159pop, 159push, 159report, 159reset, 159

iato::Bexecute, 11exec, 11

iato::Bimodal, 161� Bimodal, 161Bimodal, 161ispredict, 161istaken, 161predict, 161report, 161reset, 161update, 161

iato::Bpe, 163� Bpe, 163Bpe, 163clear, 164find, 163getrid, 163getuvr, 163report, 163reset, 163setuvr, 163update, 164

iato::Bpn, 165add, 165Bpn, 165clear, 166eval, 165report, 165reset, 165

update, 165iato::Branch, 167

Branch, 167ispredict, 167istaken, 167markbr, 168mkbr, 168nextip, 167predict, 168report, 167reset, 167update, 168

iato::Btb, 169� Btb, 169Btb, 169getsize, 169gettrg, 169isvalid, 169reset, 169update, 169

iato::Bundle, 12� Bundle, 12BN BxBxBs, 15BN BxBxBx, 15BN MAXTPL, 15BN MsMxIs, 14BN MsMxIx, 14BN MxBxBs, 15BN MxBxBx, 15BN MxFxBs, 15BN MxFxBx, 15BN MxFxIs, 14BN MxFxIx, 14BN MxIsIs, 14BN MxIsIx, 14BN MxIxBs, 15BN MxIxBx, 15BN MxIxIs, 14BN MxIxIx, 14BN MxLxXs, 14BN MxLxXx, 14BN MxMxBs, 15BN MxMxBx, 15BN MxMxFs, 15BN MxMxFx, 14BN MxMxIs, 14BN MxMxIx, 14Bundle, 12get, 13getbip, 12getinstr, 13getsip, 13getslot, 13gettmpl, 13

Page 296:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

286 INDEX

getvsb, 13isbr, 12isvalid, 12length, 13operator=, 12push, 13repr, 13reset, 12setbip, 12setsip, 12setvsb, 13tostring, 13tostrwo, 14tostrws, 13

iato::Cache, 171Cache, 171d cupd, 172d cwrt, 172d level, 172d type, 172getlevel, 171gettype, 171setparam, 171update, 171

iato::CacheBlock� CacheBlock, 173CacheBlock, 173isvalid, 173readbyte, 173reset, 173update, 173writebyte, 173

iato::CacheBlock, 173iato::CacheDirect

� CacheDirect, 175CacheDirect, 175isvalid, 175readbyte, 175reset, 175update, 175writebyte, 175

iato::CacheDirect, 175iato::Cfm, 16

Cfm, 16FR RRBM, 17getcfm, 17getfld, 17getrrb, 17GR RRBM, 17operator

=, 16operator=, 16operator==, 16PR RRBM, 17

reset, 16rotate, 17setcfm, 17setfld, 17setrrb, 17

iato::Checker, 19� Checker, 19add, 19check, 19Checker, 19reset, 19

iato::Ctx, 20� Ctx, 20Ctx, 20d bmap, 22d hmap, 22d lmap, 22d rmap, 22d smap, 22dump, 20getbool, 20getbwsz, 21getiwsz, 21getllong, 21getlong, 21getreal, 21getstr, 21getswsz, 21parse, 20reset, 20setbool, 20setllong, 21setlong, 20setreal, 21setstr, 21update, 20

iato::Delayable, 176activate, 176d dcnt, 176d dlat, 176Delayable, 176flush, 176getdlat, 176reset, 176run, 176setdlat, 176

iato::Detect, 178bind, 178chksip, 178chkspp, 178Detect, 178report, 178reset, 178

iato::Disperse, 180

Page 297:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

INDEX 287

bind, 181Disperse, 180expand, 180isback, 180isnext, 180p iib, 181p ipb, 181p mob, 181p psb, 181report, 180reset, 180

iato::Dsi, 182Dsi, 182getelat, 183getgcs, 183getpnrd, 183getrsch, 183getsid, 183ispostsr, 182ispresr, 182isready, 182operator=, 182reset, 182setelat, 183setgcs, 183setpnrd, 183setready, 182setrsch, 183setsid, 183

iato::Eib, 185Eib, 185isempty, 185pop, 185push, 185report, 185reset, 185

iato::Eiq, 186� Eiq, 186Eiq, 186isempty, 186isfull, 186isthr, 186pop, 186push, 186report, 186reset, 186

iato::ElfArgsElfArgs, 117getname, 118

iato::ElfArgs, 117iato::ElfBrk

addseg, 119ElfBrk, 119getbrkta, 119

setbrkta, 119iato::ElfBrk, 119iato::ElfBsa

ElfBsa, 120iato::ElfBsa, 120iato::ElfChecker

getchecker, 121iato::ElfChecker, 121iato::ElfEnvp

ElfEnvp, 122iato::ElfEnvp, 122iato::ElfExec

ElfExec, 123getbrkm, 123getbsam, 123getmapm, 123getstkm, 123setbrkm, 123

iato::ElfExec, 123iato::ElfImage

� ElfImage, 124ElfImage, 124getbrkm, 126getchecker, 126getentry, 125getexec, 126getimage, 126getinterp, 125getinterpname, 125getload, 125getname, 124getphnum, 125getscn, 125getshnum, 125gettxt, 125iscls64, 125isexec, 125isia64, 125ismsb, 125isstatic, 125isvalid, 125repr, 124reset, 124

iato::ElfImage, 124iato::ElfInterp

� ElfInterp, 127bind, 127ElfInterp, 127isvalid, 127

iato::ElfInterp, 127iato::ElfKernel

ElfKernel, 129getbsasz, 129getbsava, 129

Page 298:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

288 INDEX

getclktk, 129getmapb, 129getmode, 129getpgsz, 129getstksz, 129getstkva, 129setmode, 129

iato::ElfKernel, 129iato::ElfLoad

add, 131addseg, 131ElfLoad, 131getseg, 131

iato::ElfLoad, 131iato::ElfMap

ElfMap, 132findtop, 132mmap, 132munmap, 132

iato::ElfMap, 132iato::ElfMemory

� ElfMemory, 133add, 133d vmem, 134ElfMemory, 133find, 133getmem, 134isvalid, 133length, 133readbyte, 133readexec, 133remove, 134reset, 133writebyte, 133

iato::ElfMemory, 133iato::ElfSection

begin, 135ElfSection, 135end, 135getname, 135

iato::ElfSection, 135iato::ElfSection::const iterator

const iterator, 136getip, 137operator � , 137operator++, 136operator � , 136operator � =, 136operator=, 136operator==, 136operator � , 136operator � =, 136

iato::ElfSection::const iterator, 136iato::ElfSegment

ElfSegment, 138iato::ElfSegment, 138iato::ElfStack

ElfStack, 139getstkva, 139pargs, 139setstkva, 139

iato::ElfStack, 139iato::ElfTable

� ElfTable, 140add, 140ElfTable, 140getargb, 140getargc, 140getargs, 140getargv, 140reset, 140

iato::ElfTable, 140iato::ElfText

add, 142addscn, 142ElfText, 142getscn, 142

iato::ElfText, 142iato::Env, 23

� Env, 23add, 23Env, 23get, 23report, 23reset, 23setstc, 23settrc, 23

iato::Etx, 143Etx, 143reset, 143update, 143

iato::Exception, 24� Exception, 24abort, 24d reason, 25d type, 25Exception, 24getreason, 24gettype, 24operator=, 24print, 24

iato::Executable, 26exec, 26

iato::Fexecute, 27exec, 27

iato::Filter, 28� Filter, 28check, 28

Page 299:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

INDEX 289

Filter, 28filter, 28operator=, 28reset, 28setig, 28

iato::Fpsr, 29convert, 30Fpsr, 29getbfld, 30getbsfld, 30getfpsr, 29operator=, 29pconvert, 30reset, 29setfld, 29, 30setfpsr, 29

iato::Gcs, 188� Gcs, 188add, 188clear, 188dump, 189Gcs, 188report, 188resched, 189reset, 188setcnl, 188setrdy, 189setstc, 188settrc, 188

iato::Ghpp, 190� Ghpp, 190compute, 190Ghpp, 190isvalid, 190report, 190reset, 190update, 190

iato::Gshare, 192� Gshare, 192Gshare, 192ispredict, 192istaken, 192predict, 192report, 192reset, 192update, 192

iato::Hma, 194d mbb, 194flush, 194getmta, 194Hma, 194p mem, 194p mta, 194report, 194

reset, 194run, 194

iato::Htr, 196gethist, 196getsize, 196Htr, 196operator=, 196reset, 196update, 196

iato::Hypp, 198� Hypp, 198compute, 198Hypp, 198isvalid, 198report, 198reset, 198update, 198

iato::Iexecute, 31exec, 31

iato::Iib, 200� Iib, 200alloc, 200clear, 200getintr, 200Iib, 200isempty, 200isfull, 200isthr, 200isvalid, 200report, 200reset, 200setintr, 201

iato::Instr, 32d bhint, 37d bphint, 37d brch, 36d bunit, 36d chint, 37d code, 36d extd, 36d funit, 36d group, 36d ihint, 37d iip, 36d ildb, 36d immv, 37d inst, 36d istb, 36d lfhint, 37d lhint, 37d mhint, 37d opcd, 36d phint, 37d rprd, 37

Page 300:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

290 INDEX

d rrpm, 37d rsrc, 37d sfl, 36d shint, 37d sip, 36d slot, 36d stop, 36d valid, 36decode, 35getbunit, 33getdata, 33getdnum, 34getextd, 33getfpcomp, 34getfunit, 34getgroup, 33getiip, 33getimmv, 34getiopc, 33getldb, 34getoper, 35getpnum, 34getresl, 35getrrpm, 35getsfl, 33getsip, 33getslot, 33getsnum, 34getstb, 34getstop, 33getsunit, 34Instr, 32isbr, 33isnop, 34ispred, 35isvalid, 32isvig, 35operator=, 32recode, 35reset, 32setdnum, 35setiip, 33setpnum, 34setsip, 33setsnum, 34tostr, 35

iato::Interrupt, 39getcode, 40getiim, 41getinst, 40getip, 40getslot, 40Interrupt, 39isabort, 40

isfault, 40isinter, 40istrap, 40isvalid, 40operator=, 39print, 41reset, 40setinst, 40setip, 40

iato::Ip, 42getip, 42Ip, 42operator++, 42operator=, 42reset, 42setip, 42

iato::Ipb, 202� Ipb, 202add, 202find, 202getinst, 202getsize, 202Ipb, 202report, 202reset, 202setinst, 202

iato::Irb, 204� Irb, 204alloc, 204clear, 204getinst, 204getresl, 204Irb, 204isempty, 204isvalid, 204report, 204reset, 204

iato::Irt, 44� Irt, 44bind, 45clear, 44getmode, 45getplug, 45Irt, 44report, 44reset, 44route, 45setmode, 45

iato::KrnExitgetstatus, 147KrnExit, 147operator=, 147print, 147

iato::KrnExit, 147

Page 301:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

INDEX 291

iato::Lru, 46� Lru, 46getlru, 46getmru, 46Lru, 46reset, 46update, 46

iato::MemLogic� MemLogic, 47bind, 47MemLogic, 47reset, 47update, 47

iato::MemLogic, 47iato::Memory, 48

� Memory, 48d align, 51d emode, 51d prot, 51d smode, 51exbuf, 50getprot, 48isvalid, 48Memory, 48PROT EX, 51PROT FU, 51PROT NO, 51PROT RD, 51PROT RW, 51PROT WR, 51rdbuf, 50readbyte, 48readdoub, 49readexec, 49readfill, 49readint, 49readocta, 49readquad, 49readsing, 49readword, 49readxten, 49reset, 48setalign, 48setmode, 48setprot, 48wrbuf, 51writebyte, 49writedoub, 50writeint, 50writeocta, 50writequad, 50writesing, 50writespill, 50writeword, 50

writexten, 50iato::Mexecute, 53

exec, 53iato::Mli, 206

bind, 206Mli, 206preset, 206report, 206reset, 206update, 206

iato::Mob, 208� Mob, 208alloc, 208clear, 208iscancel, 208isempty, 208isvalid, 208Mob, 208preset, 208process, 209report, 208reset, 208update, 209

iato::Mpr, 210bind, 211flush, 210getbndl, 210getmrt, 210isbusy, 210istack, 210Mpr, 210preset, 211report, 210request, 210reset, 210update, 211

iato::Mrt, 54getaddr, 55getbval, 55gethrid, 56gethval, 56getlrid, 56getlval, 55getoval, 55getqval, 55gettype, 54getwval, 55isload, 54isstore, 54isvalid, 54Mrt, 54operator=, 54reset, 54setbnd, 56

Page 302:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

292 INDEX

setbval, 55sethrid, 56sethval, 55setld, 56setlrid, 56setlval, 55setoval, 55setqval, 55setst, 56, 57setwval, 55

iato::Mta, 212� Mta, 212bind, 212getbndl, 213Mta, 212process, 212reset, 212update, 213

iato::Mtx, 214getsblt, 214getsbsz, 214gettusz, 214Mtx, 214reset, 214update, 214

iato::Operand, 58getbval, 59getoval, 59getrid, 58getrval, 59isvalid, 58Operand, 58operator=, 58reset, 58setbval, 58setoval, 59setrid, 58setrval, 59setuvr, 58

iato::Perceptron, 215� Perceptron, 215compute, 215getpcbn, 215getpthr, 215getsize, 215getwbnd, 215istrue, 215isvalid, 215Perceptron, 215reset, 215update, 216

iato::Pfs, 60getfld, 61getpfs, 60

operator=, 60Pfs, 60reset, 60setfld, 60setpfs, 60

iato::Phpp, 217� Phpp, 217compute, 217isvalid, 217Phpp, 217report, 217reset, 217update, 217

iato::Pht, 219� Pht, 219getsize, 219hash, 219isstrong, 219istrue, 220isweak, 219Pht, 219reset, 219update, 220

iato::Pimodal, 221� Pimodal, 221compute, 221isvalid, 221Pimodal, 221report, 221reset, 221update, 221

iato::Pipelane, 223� Pipelane, 223activate, 223add, 224bind, 224clear, 224depth, 224flush, 223getblock, 224isholding, 223Pipelane, 223report, 223reset, 223setblock, 224setclog, 224setstc, 223settrc, 223

iato::Pipeline, 225� Pipeline, 225add, 226bind, 226clear, 226depth, 226

Page 303:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

INDEX 293

flush, 225get, 226ishalted, 226isholding, 225Pipeline, 225report, 225reset, 225run, 225setstc, 225settrc, 226

iato::Plugin, 62apply, 62Plugin, 62reset, 62

iato::Ppag, 227� Ppag, 227compute, 227isvalid, 227Ppag, 227report, 227reset, 227update, 227

iato::Predicate, 229compute, 229d bupd, 230d type, 230gettype, 229ispredict, 229isvalid, 229markpp, 230mkpr, 230Predicate, 229predict, 230report, 229reset, 229update, 230

iato::Pshare, 232� Pshare, 232compute, 232isvalid, 232Pshare, 232report, 232reset, 232update, 232

iato::Psr, 63getbyte, 64getfld, 64getpsr, 63getumr, 64isrvfd, 64operator=, 63Psr, 63reset, 63setfld, 64

setpsr, 63setumr, 63

iato::Rat, 234� Rat, 234getmap, 234getsize, 234Rat, 234report, 234reset, 234setmap, 234, 235

iato::Record, 65chkbval, 68chklreg, 68chkoval, 68chkpnum, 68chkrval, 68getbnd, 69getinst, 69getname, 66gettip, 69gettype, 66iscancel, 69isignore, 66isresched, 69istip, 69operator=, 66print, 68rcdrd, 69rcdwr, 68Record, 65, 66repr, 68setalat, 68setbndl, 67setbr, 67setcanc, 67setinst, 67setname, 66setoprd, 67setrcda, 68setrchk, 67setrdta, 66setresl, 67setrmem, 68setrsch, 67settype, 66setwmem, 68totype, 69

iato::Record::t tynm, 70iato::Register, 71

� Register, 71check, 72eval, 72getbval, 72getoval, 72

Page 304:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

294 INDEX

getrval, 72Register, 71report, 71reset, 71write, 71, 72

iato::ReqBufadd, 236bind, 236flush, 236get, 236length, 236report, 236ReqBuf, 236reset, 236

iato::ReqBuf, 236iato::Resource, 74

� Resource, 74d name, 75getname, 74operator=, 74p stat, 75p tracer, 75report, 74reset, 74Resource, 74setname, 74setstc, 74settrc, 75

iato::Restart, 238bind, 238check, 238d ipfr, 239d rip, 239d slot, 239d srlz, 239flush, 238getsrlz, 238isvalid, 238p pipe, 239p rbk, 239pfdef, 238pflcl, 239pfnxt, 239pfsrl, 239pfstd, 239report, 238reset, 238Restart, 238

iato::Result, 76getachk, 80getaclr, 80getaddr, 77getaset, 80getbval, 78

getimmv, 78getmrt, 80getoval, 79getrid, 77getrimv, 78getrip, 77getrop, 77getrval, 79getspec, 80getuvr, 78isnone, 77isreg, 77isvalid, 77operator=, 76reset, 76Result, 76setachk, 79setaclr, 79setaddr, 77setaset, 79setbval, 78setimmv, 78setinv, 80setoval, 78, 79setrid, 77setrimv, 78setrrt, 77setrval, 79setspec, 79setuval, 79setvalid, 77update, 80

iato::Rid, 81clrvbit, 82d erdy, 84d lnum, 83d onum, 83d pnum, 83d type, 83d valid, 83d vbit, 83d vnum, 83geterdy, 82getlnum, 82getonum, 82getpnum, 82gettnum, 82gettype, 82getvbit, 82getvnum, 82islrnm, 82isready, 82isvalid, 81operator=, 81

Page 305:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

INDEX 295

operator==, 81reset, 81Rid, 81seterdy, 81setlnum, 82setpnum, 83setreg, 83setvnum, 83tostring, 83

iato::Rob, 241� Rob, 241alloc, 242getbsip, 243getiiib, 243getiip, 242getimob, 243getslot, 242ipop, 242iscancel, 242isempty, 241isfull, 241isintr, 242isnop, 242ispop, 241issrlz, 241isvalid, 241npop, 242pop, 242report, 241reset, 241Rob, 241setbsip, 243setcnlf, 243setexe, 243setintr, 243setirb, 243spop, 242

iato::Rpm, 85getdst, 86getrfm, 86getsrc, 86isvalid, 85operator=, 85reset, 85Rpm, 85setmap, 85t rfm, 85

iato::Rse, 87aftset, 88d ngr, 88d state, 88flush, 87getsst, 87getste, 87

preset, 88rename, 88reset, 87Rse, 87setsst, 87setste, 87update, 88validate, 88

iato::Rse::State, 89alloc, 90call, 90chkcfm, 89fill, 90getbof, 89getcfm, 89loop, 90mapfr, 90mapgr, 90mappr, 90maprid, 90operator==, 89reset, 89retn, 90setbof, 89setcfm, 89setngr, 89spill, 90State, 89

iato::RseLogicaftset, 244flush, 244getsst, 244preset, 244rename, 244report, 244reset, 244RseLogic, 244setsst, 244update, 245

iato::RseLogic, 244iato::RseStack

� RseStack, 246isempty, 246isfull, 246pop, 246push, 246report, 246reset, 246RseStack, 246shift, 246

iato::RseStack, 246iato::Runnable, 248

flush, 248run, 248

Page 306:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

296 INDEX

Runnable, 248iato::Scoreboard, 249

� Scoreboard, 249alloc, 249clean, 249getstate, 250ishazard, 250isholding, 250ismarked, 250mark, 250MAX STATES, 250report, 249reset, 249retire, 250Scoreboard, 249setstate, 250

iato::Sct, 252isstrong, 252istrue, 252isweak, 252operator=, 252reset, 252Sct, 252update, 252

iato::Segment, 92� Segment, 92d base, 93d size, 93getbase, 92getsize, 92isvalid, 92mapdata, 92p data, 93readbyte, 93reset, 92Segment, 92setbase, 92setdata, 92writebyte, 93

iato::Slot, 254getinst, 254getspos, 254getunit, 254isfree, 254operator=, 254reset, 254setinst, 255setspos, 254Slot, 254

iato::Ssi, 256d cnlf, 258d icfm, 258d iidx, 258d midx, 258

d ppfl, 258d ridx, 258d scfm, 258getcnlf, 257geticfm, 257getiib, 257getmob, 257getppfl, 257getrix, 256getscfm, 257operator=, 256reset, 256setcnlf, 257seticfm, 257setiib, 256setmob, 257setppfl, 257setrix, 256setscfm, 257Ssi, 256

iato::Stage, 259bind, 259d halt, 260flush, 259ishalted, 259isholding, 259p nstg, 260p pstg, 260reset, 259run, 259setnext, 259setprev, 259Stage, 259

iato::Stat, 94� Stat, 94addbndl, 94addinst, 94, 95d bflg, 96d bndl, 96d etim, 95d iflg, 96d inst, 96d nbcn, 96d nbnd, 95d nbpd, 95d ncan, 96d ncyc, 95d nflg, 96d nins, 95d npbr, 96d npbs, 96d nppr, 96d npps, 96d nprd, 95

Page 307:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

INDEX 297

d nrsh, 96d stim, 95getnnop, 95markbp, 94markes, 94markpp, 94marksc, 94print, 95printb, 95printi, 95printn, 95reset, 94setflg, 94Stat, 94summary, 95

iato::Station, 261� Station, 261alloc, 262clear, 262dump, 262getgcs, 261getrdy, 262isempty, 262isfull, 261report, 261resched, 262reset, 261setcnl, 262setgcs, 261setpnrd, 262setrdy, 262Station, 261

iato::Stb, 264� Stb, 264bind, 264isempty, 264push, 264report, 264reset, 264Stb, 264

iato::Syscall, 149apply, 149setmem, 149setrbk, 149setrse, 149Syscall, 149

iato::System, 266� System, 266flush, 266getbspva, 267getchecker, 267getentry, 266gethma, 266getsci, 266

getstkva, 267report, 266reset, 266run, 266System, 266

iato::t huge, 97gethigh, 98getlow, 98HUGE SIZE, 98operator � , 97operator+, 97operator=, 97operator � � , 98sethigh, 98t huge, 97

iato::t real, 99convert, 104doubleld, 103doublest, 103extendedld, 103extendedst, 103fill, 103getabs, 101getbval, 101getexp, 102getsgfd, 102getsign, 102integerld, 103integerst, 104isfinite, 102isinf, 102isint, 102isnan, 101isnat, 101isninf, 102isnorm, 102ispinf, 101ispsz, 101isunorm, 102normalize, 102operator � , 100, 105operator � =, 100operator long double, 101operator+, 99, 104operator+=, 99operator-, 100, 105operator-=, 100operator/, 100, 105operator/=, 100operator � , 100operator � � , 105operator � =, 100operator=, 99operator==, 100

Page 308:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

298 INDEX

operator � , 101operator � =, 101rcpa, 104repr, 101rsqrt, 104setexp, 102setinteger, 103setnanindefinite, 101setnat, 101setninf, 101setpinf, 101setsgfd, 103setsign, 102singleld, 103singlest, 103spill, 104t real, 99TR DESZ, 104TR DOSZ, 104TR IASZ, 104TR SFSZ, 104TR SISZ, 104unordered, 102

iato::Tracer, 106� Tracer, 106add, 107addtype, 106newtrace, 107newtraces, 107print, 107reset, 106setname, 106t trcd, 106t vrcd, 106Tracer, 106

iato::Tracer::Reader, 108� Reader, 108getbicc, 108geteicc, 108getrcd, 108hdinfo, 108Reader, 108trcrd, 108

iato::Trb, 268� Trb, 268alloc, 269cancel, 269clean, 269gettbit, 268gettnum, 268initial, 269isready, 268report, 268reset, 268

setrdy, 269settnum, 268Trb, 268

iato::Umr, 109getfld, 110getumr, 109operator=, 109reset, 109setfld, 109setumr, 109Umr, 109

iato::Urb, 270� Urb, 270alloc, 270clean, 270getuvr, 270report, 270reset, 270setuvr, 270Urb, 270

iato::Urf, 272� Urf, 272cancel, 273clean, 273eval, 273flush, 272getrat, 272gettrb, 272geturb, 272isready, 272, 273report, 272reroute, 273reset, 272update, 273Urf, 272

iato::Uvr, 111getbval, 111getoval, 112getrval, 112gettype, 111isvalid, 111operator=, 111reset, 111setbval, 111setdval, 112setoval, 111setrval, 112Uvr, 111

iato::Weakable, 274notify, 274Weakable, 274

Iibiato::Iib, 200

initial

Page 309:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

INDEX 299

iato::Trb, 269Instr

iato::Instr, 32integerld

iato::t real, 103integerst

iato::t real, 104Interrupt

iato::Interrupt, 39Ip

iato::Ip, 42Ipb

iato::Ipb, 202ipop

iato::Rob, 242Irb

iato::Irb, 204Irt

iato::Irt, 44isabort

iato::Interrupt, 40isback

iato::Disperse, 180isbr

iato::Bundle, 12iato::Instr, 33

isbusyiato::Mpr, 210

iscanceliato::Mob, 208iato::Record, 69iato::Rob, 242

iscls64iato::ElfImage, 125

isemptyiato::Bdb, 159iato::Eib, 185iato::Eiq, 186iato::Iib, 200iato::Irb, 204iato::Mob, 208iato::Rob, 241iato::RseStack, 246iato::Station, 262iato::Stb, 264

isexeciato::ElfImage, 125

isfaultiato::Interrupt, 40

isfiniteiato::t real, 102

isfreeiato::Slot, 254

isfull

iato::Alat, 9iato::Bdb, 159iato::Eiq, 186iato::Iib, 200iato::Rob, 241iato::RseStack, 246iato::Station, 261

ishaltediato::Pipeline, 226iato::Stage, 259

ishazardiato::Scoreboard, 250

isholdingiato::Pipelane, 223iato::Pipeline, 225iato::Scoreboard, 250iato::Stage, 259

isia64iato::ElfImage, 125

isignoreiato::Record, 66

isinfiato::t real, 102

isintiato::t real, 102

isinteriato::Interrupt, 40

isintriato::Rob, 242

isloadiato::Mrt, 54

islrnmiato::Rid, 82

ismarkediato::Scoreboard, 250

ismsbiato::ElfImage, 125

isnaniato::t real, 101

isnatiato::t real, 101

isnextiato::Disperse, 180

isninfiato::t real, 102

isnoneiato::Result, 77

isnopiato::Instr, 34iato::Rob, 242

isnormiato::t real, 102

ispinfiato::t real, 101

Page 310:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

300 INDEX

ispopiato::Rob, 241

ispostsriato::Dsi, 182

isprediato::Instr, 35

ispredictiato::Bimodal, 161iato::Branch, 167iato::Gshare, 192iato::Predicate, 229

ispresriato::Dsi, 182

ispsziato::t real, 101

isreadyiato::Dsi, 182iato::Rid, 82iato::Trb, 268iato::Urf, 272, 273

isregiato::Result, 77

isreschediato::Record, 69

isrvfdiato::Psr, 64

issrlziato::Rob, 241

isstaticiato::ElfImage, 125

isstoreiato::Mrt, 54

isstrongiato::Pht, 219iato::Sct, 252

istackiato::Mpr, 210

istakeniato::Bimodal, 161iato::Branch, 167iato::Gshare, 192

isthriato::Bdb, 159iato::Eiq, 186iato::Iib, 200

istipiato::Record, 69

istrapiato::Interrupt, 40

istrueiato::Perceptron, 215iato::Pht, 220iato::Sct, 252

isunorm

iato::t real, 102isvalid

iato::Alat, 9iato::Btb, 169iato::Bundle, 12iato::CacheBlock, 173iato::CacheDirect, 175iato::ElfImage, 125iato::ElfInterp, 127iato::ElfMemory, 133iato::Ghpp, 190iato::Hypp, 198iato::Iib, 200iato::Instr, 32iato::Interrupt, 40iato::Irb, 204iato::Memory, 48iato::Mob, 208iato::Mrt, 54iato::Operand, 58iato::Perceptron, 215iato::Phpp, 217iato::Pimodal, 221iato::Ppag, 227iato::Predicate, 229iato::Pshare, 232iato::Restart, 238iato::Result, 77iato::Rid, 81iato::Rob, 241iato::Rpm, 85iato::Segment, 92iato::Uvr, 111

isvigiato::Instr, 35

isweakiato::Pht, 219iato::Sct, 252

KrnExitiato::KrnExit, 147

lengthiato::Bundle, 13iato::ElfMemory, 133iato::ReqBuf, 236

loadiato::Alat, 10

loopiato::Rse::State, 90

Lruiato::Lru, 46

mapdata

Page 311:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

INDEX 301

iato::Segment, 92mapfr

iato::Rse::State, 90mapgr

iato::Rse::State, 90mappr

iato::Rse::State, 90maprid

iato::Rse::State, 90mark

iato::Scoreboard, 250markbp

iato::Stat, 94markbr

iato::Branch, 168markes

iato::Stat, 94markpp

iato::Predicate, 230iato::Stat, 94

marksciato::Stat, 94

MAX STATESiato::Scoreboard, 250

MemLogiciato::MemLogic, 47

Memoryiato::Memory, 48

memupdiato::Alat, 9

mkbriato::Branch, 168

mkpriato::Predicate, 230

Mliiato::Mli, 206

mmapiato::ElfMap, 132

Mobiato::Mob, 208

Mpriato::Mpr, 210

Mrtiato::Mrt, 54

Mtaiato::Mta, 212

Mtxiato::Mtx, 214

munmapiato::ElfMap, 132

newtraceiato::Tracer, 107

newtraces

iato::Tracer, 107nextip

iato::Branch, 167normalize

iato::t real, 102notify

iato::Weakable, 274npop

iato::Rob, 242

Operandiato::Operand, 58

operator �iato::ElfSection::const iterator, 137iato::t huge, 97iato::t real, 100, 105

operator � =iato::t real, 100

operator long doubleiato::t real, 101

operator!=iato::Cfm, 16

operator+iato::t huge, 97iato::t real, 99, 104

operator++iato::ElfSection::const iterator, 136iato::Ip, 42

operator+=iato::t real, 99

operator-iato::t real, 100, 105

operator-=iato::t real, 100

operator/iato::t real, 100, 105

operator/=iato::t real, 100

operator �iato::ElfSection::const iterator, 136iato::t real, 100

operator � �iato::t real, 105

operator � =iato::ElfSection::const iterator, 136iato::t real, 100

operator=iato::Bundle, 12iato::Cfm, 16iato::Dsi, 182iato::ElfSection::const iterator, 136iato::Exception, 24iato::Filter, 28iato::Fpsr, 29

Page 312:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

302 INDEX

iato::Htr, 196iato::Instr, 32iato::Interrupt, 39iato::Ip, 42iato::KrnExit, 147iato::Mrt, 54iato::Operand, 58iato::Pfs, 60iato::Psr, 63iato::Record, 66iato::Resource, 74iato::Result, 76iato::Rid, 81iato::Rpm, 85iato::Sct, 252iato::Slot, 254iato::Ssi, 256iato::t huge, 97iato::t real, 99iato::Umr, 109iato::Uvr, 111

operator==iato::Cfm, 16iato::ElfSection::const iterator, 136iato::Rid, 81iato::Rse::State, 89iato::t real, 100

operator �iato::ElfSection::const iterator, 136iato::t real, 101

operator � =iato::ElfSection::const iterator, 136iato::t real, 101

operator � �iato::t huge, 98

p dataiato::Segment, 93

p iibiato::Disperse, 181

p ipbiato::Disperse, 181

p memiato::Hma, 194

p mobiato::Disperse, 181

p mtaiato::Hma, 194

p nstgiato::Stage, 260

p pipeiato::Restart, 239

p psbiato::Disperse, 181

p pstgiato::Stage, 260

p rbkiato::Restart, 239

p statiato::Resource, 75

p traceriato::Resource, 75

pargsiato::ElfStack, 139

parseiato::Ctx, 20

pconvertiato::Fpsr, 30

Perceptroniato::Perceptron, 215

pfdefiato::Restart, 238

pflcliato::Restart, 239

pfnxtiato::Restart, 239

Pfsiato::Pfs, 60

pfsrliato::Restart, 239

pfstdiato::Restart, 239

Phppiato::Phpp, 217

Phtiato::Pht, 219

Pimodaliato::Pimodal, 221

Pipelaneiato::Pipelane, 223

Pipelineiato::Pipeline, 225

Pluginiato::Plugin, 62

popiato::Bdb, 159iato::Eib, 185iato::Eiq, 186iato::Rob, 242iato::RseStack, 246

Ppagiato::Ppag, 227

PR RRBMiato::Cfm, 17

Predicateiato::Predicate, 229

predictiato::Bimodal, 161

Page 313:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

INDEX 303

iato::Branch, 168iato::Gshare, 192iato::Predicate, 230

presetiato::Mli, 206iato::Mob, 208iato::Mpr, 211iato::Rse, 88iato::RseLogic, 244

printiato::Exception, 24iato::Interrupt, 41iato::KrnExit, 147iato::Record, 68iato::Stat, 95iato::Tracer, 107

printbiato::Stat, 95

printiiato::Stat, 95

printniato::Stat, 95

processiato::Mob, 209iato::Mta, 212

PROT EXiato::Memory, 51

PROT FUiato::Memory, 51

PROT NOiato::Memory, 51

PROT RDiato::Memory, 51

PROT RWiato::Memory, 51

PROT WRiato::Memory, 51

Pshareiato::Pshare, 232

Psriato::Psr, 63

pushiato::Bdb, 159iato::Bundle, 13iato::Eib, 185iato::Eiq, 186iato::RseStack, 246iato::Stb, 264

Ratiato::Rat, 234

rcdrdiato::Record, 69

rcdwr

iato::Record, 68rcpa

iato::t real, 104rdbuf

iato::Memory, 50readbyte

iato::CacheBlock, 173iato::CacheDirect, 175iato::ElfMemory, 133iato::Memory, 48iato::Segment, 93

readdoubiato::Memory, 49

Readeriato::Tracer::Reader, 108

readexeciato::ElfMemory, 133iato::Memory, 49

readfilliato::Memory, 49

readintiato::Memory, 49

readoctaiato::Memory, 49

readquadiato::Memory, 49

readsingiato::Memory, 49

readwordiato::Memory, 49

readxteniato::Memory, 49

recodeiato::Instr, 35

Recordiato::Record, 65, 66

Registeriato::Register, 71

removeiato::Alat, 10iato::ElfMemory, 134

renameiato::Rse, 88iato::RseLogic, 244

reportiato::Alat, 9iato::Bdb, 159iato::Bimodal, 161iato::Bpe, 163iato::Bpn, 165iato::Branch, 167iato::Detect, 178iato::Disperse, 180iato::Eib, 185

Page 314:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

304 INDEX

iato::Eiq, 186iato::Env, 23iato::Gcs, 188iato::Ghpp, 190iato::Gshare, 192iato::Hma, 194iato::Hypp, 198iato::Iib, 200iato::Ipb, 202iato::Irb, 204iato::Irt, 44iato::Mli, 206iato::Mob, 208iato::Mpr, 210iato::Phpp, 217iato::Pimodal, 221iato::Pipelane, 223iato::Pipeline, 225iato::Ppag, 227iato::Predicate, 229iato::Pshare, 232iato::Rat, 234iato::Register, 71iato::ReqBuf, 236iato::Resource, 74iato::Restart, 238iato::Rob, 241iato::RseLogic, 244iato::RseStack, 246iato::Scoreboard, 249iato::Station, 261iato::Stb, 264iato::System, 266iato::Trb, 268iato::Urb, 270iato::Urf, 272

repriato::Bundle, 13iato::ElfImage, 124iato::Record, 68iato::t real, 101

ReqBufiato::ReqBuf, 236

requestiato::Mpr, 210

rerouteiato::Urf, 273

reschediato::Gcs, 189iato::Station, 262

resetiato::Alat, 9iato::Bdb, 159iato::Bimodal, 161

iato::Bpe, 163iato::Bpn, 165iato::Branch, 167iato::Btb, 169iato::Bundle, 12iato::CacheBlock, 173iato::CacheDirect, 175iato::Cfm, 16iato::Checker, 19iato::Ctx, 20iato::Delayable, 176iato::Detect, 178iato::Disperse, 180iato::Dsi, 182iato::Eib, 185iato::Eiq, 186iato::ElfImage, 124iato::ElfMemory, 133iato::ElfTable, 140iato::Env, 23iato::Etx, 143iato::Filter, 28iato::Fpsr, 29iato::Gcs, 188iato::Ghpp, 190iato::Gshare, 192iato::Hma, 194iato::Htr, 196iato::Hypp, 198iato::Iib, 200iato::Instr, 32iato::Interrupt, 40iato::Ip, 42iato::Ipb, 202iato::Irb, 204iato::Irt, 44iato::Lru, 46iato::MemLogic, 47iato::Memory, 48iato::Mli, 206iato::Mob, 208iato::Mpr, 210iato::Mrt, 54iato::Mta, 212iato::Mtx, 214iato::Operand, 58iato::Perceptron, 215iato::Pfs, 60iato::Phpp, 217iato::Pht, 219iato::Pimodal, 221iato::Pipelane, 223iato::Pipeline, 225iato::Plugin, 62

Page 315:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

INDEX 305

iato::Ppag, 227iato::Predicate, 229iato::Pshare, 232iato::Psr, 63iato::Rat, 234iato::Register, 71iato::ReqBuf, 236iato::Resource, 74iato::Restart, 238iato::Result, 76iato::Rid, 81iato::Rob, 241iato::Rpm, 85iato::Rse, 87iato::Rse::State, 89iato::RseLogic, 244iato::RseStack, 246iato::Scoreboard, 249iato::Sct, 252iato::Segment, 92iato::Slot, 254iato::Ssi, 256iato::Stage, 259iato::Stat, 94iato::Station, 261iato::Stb, 264iato::System, 266iato::Tracer, 106iato::Trb, 268iato::Umr, 109iato::Urb, 270iato::Urf, 272iato::Uvr, 111

Resourceiato::Resource, 74

Restartiato::Restart, 238

Resultiato::Result, 76

retireiato::Scoreboard, 250

retniato::Rse::State, 90

Ridiato::Rid, 81

Robiato::Rob, 241

rotateiato::Cfm, 17

routeiato::Irt, 45

Rpmiato::Rpm, 85

Rse

iato::Rse, 87RseLogic

iato::RseLogic, 244RseStack

iato::RseStack, 246rsqrt

iato::t real, 104run

iato::Delayable, 176iato::Hma, 194iato::Pipeline, 225iato::Runnable, 248iato::Stage, 259iato::System, 266

Runnableiato::Runnable, 248

Scoreboardiato::Scoreboard, 249

Sctiato::Sct, 252

Segmentiato::Segment, 92

setachkiato::Result, 79

setaclriato::Result, 79

setaddriato::Result, 77

setalatiato::Record, 68

setaligniato::Memory, 48

setasetiato::Result, 79

setbaseiato::Segment, 92

setbipiato::Bundle, 12

setblockiato::Pipelane, 224

setbndiato::Mrt, 56

setbndliato::Record, 67

setbofiato::Rse::State, 89

setbooliato::Ctx, 20

setbriato::Record, 67

setbrkmiato::ElfExec, 123

setbrkta

Page 316:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

306 INDEX

iato::ElfBrk, 119setbsip

iato::Rob, 243setbval

iato::Mrt, 55iato::Operand, 58iato::Result, 78iato::Uvr, 111

setcanciato::Record, 67

setcfmiato::Cfm, 17iato::Rse::State, 89

setclogiato::Pipelane, 224

setcnliato::Gcs, 188iato::Station, 262

setcnlfiato::Rob, 243iato::Ssi, 257

setdataiato::Segment, 92

setdlatiato::Delayable, 176

setdnumiato::Instr, 35

setdvaliato::Uvr, 112

setelatiato::Dsi, 183

seterdyiato::Rid, 81

setexeiato::Rob, 243

setexpiato::t real, 102

setfldiato::Cfm, 17iato::Fpsr, 29, 30iato::Pfs, 60iato::Psr, 64iato::Umr, 109

setflgiato::Stat, 94

setfpsriato::Fpsr, 29

setgcsiato::Dsi, 183iato::Station, 261

sethighiato::t huge, 98

sethridiato::Mrt, 56

sethvaliato::Mrt, 55

seticfmiato::Ssi, 257

setigiato::Filter, 28

setiibiato::Ssi, 256

setiipiato::Instr, 33

setimmviato::Result, 78

setinstiato::Interrupt, 40iato::Ipb, 202iato::Record, 67iato::Slot, 255

setintegeriato::t real, 103

setintriato::Iib, 201iato::Rob, 243

setinviato::Result, 80

setipiato::Interrupt, 40iato::Ip, 42

setirbiato::Rob, 243

setldiato::Mrt, 56

setllongiato::Ctx, 21

setlnumiato::Rid, 82

setlongiato::Ctx, 20

setlridiato::Mrt, 56

setlvaliato::Mrt, 55

setmapiato::Rat, 234, 235iato::Rpm, 85

setmemiato::Syscall, 149

setmobiato::Ssi, 257

setmodeiato::ElfKernel, 129iato::Irt, 45iato::Memory, 48

setnameiato::Record, 66

Page 317:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

INDEX 307

iato::Resource, 74iato::Tracer, 106

setnanindefiniteiato::t real, 101

setnatiato::t real, 101

setnextiato::Stage, 259

setngriato::Rse::State, 89

setninfiato::t real, 101

setoprdiato::Record, 67

setovaliato::Mrt, 55iato::Operand, 59iato::Result, 78, 79iato::Uvr, 111

setparamiato::Cache, 171

setpfsiato::Pfs, 60

setpinfiato::t real, 101

setpnrdiato::Dsi, 183iato::Station, 262

setpnumiato::Instr, 34iato::Rid, 83

setppfliato::Ssi, 257

setpreviato::Stage, 259

setprotiato::Memory, 48

setpsriato::Psr, 63

setqvaliato::Mrt, 55

setrbkiato::Syscall, 149

setrcdaiato::Record, 68

setrchkiato::Record, 67

setrdtaiato::Record, 66

setrdyiato::Gcs, 189iato::Station, 262iato::Trb, 269

setready

iato::Dsi, 182setreal

iato::Ctx, 21setreg

iato::Rid, 83setresl

iato::Record, 67setrid

iato::Operand, 58iato::Result, 77

setrimviato::Result, 78

setrixiato::Ssi, 256

setrmemiato::Record, 68

setrrbiato::Cfm, 17

setrrtiato::Result, 77

setrschiato::Dsi, 183iato::Record, 67

setrseiato::Syscall, 149

setrvaliato::Operand, 59iato::Result, 79iato::Uvr, 112

setscfmiato::Ssi, 257

setsgfdiato::t real, 103

setsidiato::Dsi, 183

setsigniato::t real, 102

setsipiato::Bundle, 12iato::Instr, 33

setsnumiato::Instr, 34

setspeciato::Result, 79

setsposiato::Slot, 254

setsstiato::Rse, 87iato::RseLogic, 244

setstiato::Mrt, 56, 57

setstateiato::Scoreboard, 250

setstc

Page 318:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

308 INDEX

iato::Env, 23iato::Gcs, 188iato::Pipelane, 223iato::Pipeline, 225iato::Resource, 74

setsteiato::Rse, 87

setstkvaiato::ElfStack, 139

setstriato::Ctx, 21

settnumiato::Trb, 268

settrciato::Env, 23iato::Gcs, 188iato::Pipelane, 223iato::Pipeline, 226iato::Resource, 75

settypeiato::Record, 66

setumriato::Psr, 63iato::Umr, 109

setuvaliato::Result, 79

setuvriato::Bpe, 163iato::Operand, 58iato::Urb, 270

setvalidiato::Result, 77

setvnumiato::Rid, 83

setvsbiato::Bundle, 13

setwmemiato::Record, 68

setwvaliato::Mrt, 55

shiftiato::RseStack, 246

singleldiato::t real, 103

singlestiato::t real, 103

Slotiato::Slot, 254

spilliato::Rse::State, 90iato::t real, 104

spopiato::Rob, 242

Ssi

iato::Ssi, 256Stage

iato::Stage, 259Stat

iato::Stat, 94State

iato::Rse::State, 89Station

iato::Station, 261Stb

iato::Stb, 264summary

iato::Stat, 95Syscall

iato::Syscall, 149System

iato::System, 266

t hugeiato::t huge, 97

t realiato::t real, 99

t rfmiato::Rpm, 85

t trcdiato::Tracer, 106

t vrcdiato::Tracer, 106

tostriato::Instr, 35

tostringiato::Bundle, 13iato::Rid, 83

tostrwoiato::Bundle, 14

tostrwsiato::Bundle, 13

totypeiato::Record, 69

TR DESZiato::t real, 104

TR DOSZiato::t real, 104

TR IASZiato::t real, 104

TR SFSZiato::t real, 104

TR SISZiato::t real, 104

Traceriato::Tracer, 106

Trbiato::Trb, 268

trcrd

Page 319:  · Contents I ISA Library 1 0.1 IATO ISA LIBRARY Compound List . . . . . . . . . . . . . . . . . . . . 3 0.2 iato::Aexecute Class Reference

INDEX 309

iato::Tracer::Reader, 108

Umriato::Umr, 109

unorderediato::t real, 102

updateiato::Bimodal, 161iato::Bpe, 164iato::Bpn, 165iato::Branch, 168iato::Btb, 169iato::Cache, 171iato::CacheBlock, 173iato::CacheDirect, 175iato::Ctx, 20iato::Etx, 143iato::Ghpp, 190iato::Gshare, 192iato::Htr, 196iato::Hypp, 198iato::Lru, 46iato::MemLogic, 47iato::Mli, 206iato::Mob, 209iato::Mpr, 211iato::Mta, 213iato::Mtx, 214iato::Perceptron, 216iato::Phpp, 217iato::Pht, 220iato::Pimodal, 221iato::Ppag, 227iato::Predicate, 230iato::Pshare, 232iato::Result, 80iato::Rse, 88iato::RseLogic, 245iato::Sct, 252iato::Urf, 273

Urbiato::Urb, 270

Urfiato::Urf, 272

Uvriato::Uvr, 111

validateiato::Rse, 88

Weakableiato::Weakable, 274

wrbufiato::Memory, 51

writeiato::Register, 71, 72

writebyteiato::CacheBlock, 173iato::CacheDirect, 175iato::ElfMemory, 133iato::Memory, 49iato::Segment, 93

writedoubiato::Memory, 50

writeintiato::Memory, 50

writeoctaiato::Memory, 50

writequadiato::Memory, 50

writesingiato::Memory, 50

writespilliato::Memory, 50

writewordiato::Memory, 50

writexteniato::Memory, 50