· contents i isa library 1 0.1 iato isa library compound list . . . . . . . . . . . . . . . . . ....
TRANSCRIPT
IATO, IA64 Toolkit
Tools and Library Reference
Revision 1.0.0 - c�
2004 INRIA
Amaury Darsch - Pierre Villalon - Andre Seznec
2
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
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
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
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
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
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
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
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
Part I
ISA Library
1
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
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
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
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
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
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
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)
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
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
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.
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
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.
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
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)
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.
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
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
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
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.
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
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
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.
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
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
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
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
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)
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
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
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
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
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
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.
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.
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
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
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)
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.
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
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.
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
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)
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
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
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
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
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.
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
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.
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
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
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.
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
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
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
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)
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
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.
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
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
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)
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
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
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.
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.
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
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
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
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.
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.
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
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
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
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.
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
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.
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
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
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
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.
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.
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
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
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
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.
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
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
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.
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
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
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
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.
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.
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
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.
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
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
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.
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
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
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.
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.
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
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.
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
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
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.
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
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
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
Part II
ELF Library
113
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
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
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.
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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.
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
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
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
144
Part III
Kernel Library
145
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.
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
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.
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
Part IV
MAC Library
151
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
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
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
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
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
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 �
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.
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
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.
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
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.
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
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
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
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.
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
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.
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
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.
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
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.
174
The documentation for this class was generated from the following file:
� CacheBlock.hpp
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
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
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
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.
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
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.
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
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)
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.
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
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
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.
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
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
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
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.
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
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
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
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.
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
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.
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
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.
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
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.
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
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.
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
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.
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
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:
0.94. IATO::MLI CLASS REFERENCE 207
� Mli.hpp
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.
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
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
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
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.
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
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
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.
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
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.
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
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.
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
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.
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
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
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
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
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
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.
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
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
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.
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
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.
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
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
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
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:
0.109. IATO::REQBUF CLASS REFERENCE 237
� ReqBuf.hpp
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.
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:
240
� Restart.hpp
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.
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.
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
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.
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
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.
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
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
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.
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.
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
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
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
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.
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
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.
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.
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
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
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
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
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
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
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.
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
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.
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
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.
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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