Caches transparently buffer memory blocks. Replacement policy dynamically decides which element to replace. LRU least recently used. PLRU pseudo LRU.
Abstract Interpretation of FIFO Replacement Daniel Grund
Jan Reineke
Saarland University, Saarbrücken, Germany
Static Analysis Symposium 2009
saarland university
computer science
saarland university
Outline 1
computer science
Introduction & Motivation Timing Analysis Cache Analysis
2
Abstract Interpretation of FIFO Challenge FIFO Replacement Domain Cooperation Must Analysis May Analysis
3
Evaluation Related Work Analysis Precision
4
Summary
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
2 / 32
saarland university
Outline 1
computer science
Introduction & Motivation Timing Analysis Cache Analysis
2
Abstract Interpretation of FIFO Challenge FIFO Replacement Domain Cooperation Must Analysis May Analysis
3
Evaluation Related Work Analysis Precision
4
Summary
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
3 / 32
saarland university
Frequency
Notions in Timing Analysis
computer science
Analysis-guaranteed timing bounds Input- and state-induced variance
LB
BCET
Overest.
WCET
UB
Execution time
Execution time depends on I I
program input initial hardware state
Bounds required for schedulability analysis of real-time systems
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
4 / 32
saarland university
Static Timing-Analysis Framework Binary Executable
computer science
Legend: Data Action
CFG Reconstruction
Framework implemented by aiT of AbsInt Micro-architectural analysis
Control-flow Graph
models pipeline, caches, buses, etc. derives bounds on BB exec. times
Value Analysis
Loop Bound Analysis
Control-flow Analysis
Annotated CFG
Microarchitectural Analysis
Basic Block Timing Info
Daniel Grund and Jan Reineke
is an abstract interpretation with a huge domain is the computationally most expensive module
Global Bound Analysis
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
5 / 32
saarland university
Caches and Replacement Policies
computer science
“hit”
[ab] CPU
Cache
Main Memory
Capacity: Latency:
32 KB 3 cycles
2 MB 100 cycles
Caches transparently buffer memory blocks
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
6 / 32
saarland university
Caches and Replacement Policies
computer science
“hit”
[ab] CPU
Capacity: Latency:
a?
Cache
Main Memory
32 KB 3 cycles
2 MB 100 cycles
Caches transparently buffer memory blocks
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
6 / 32
saarland university
Caches and Replacement Policies
computer science
“hit”
[ab] CPU
Capacity: Latency:
a!
Cache
Main Memory
32 KB 3 cycles
2 MB 100 cycles
Caches transparently buffer memory blocks
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
6 / 32
saarland university
Caches and Replacement Policies
computer science
“miss” [ab] CPU
Capacity: Latency:
c?
Cache
Main Memory
32 KB 3 cycles
2 MB 100 cycles
Caches transparently buffer memory blocks
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
6 / 32
saarland university
Caches and Replacement Policies
computer science
“miss” [ab] CPU
Cache
Capacity: Latency:
32 KB 3 cycles
c?
Main Memory
2 MB 100 cycles
Caches transparently buffer memory blocks
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
6 / 32
saarland university
Caches and Replacement Policies
computer science
“miss” [ac ] CPU
Cache
Capacity: Latency:
32 KB 3 cycles
c!
Main Memory
2 MB 100 cycles
Caches transparently buffer memory blocks Replacement policy dynamically decides which element to replace LRU least recently used PLRU pseudo LRU FIFO first-in first-out Have great influence on abstraction and (obtainable) analysis precision Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
6 / 32
saarland university
Caches and Replacement Policies
computer science
“miss” [ac ] CPU
Capacity: Latency:
c!
Cache
Main Memory
32 KB 3 cycles
2 MB 100 cycles
Caches transparently buffer memory blocks Replacement policy dynamically decides which element to replace LRU least recently used PLRU pseudo LRU FIFO first-in first-out Have great influence on abstraction and (obtainable) analysis precision Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
6 / 32
saarland university
Cache Analysis: Motivation & Application
computer science
Cache performance has great influence on overall performance Need tight bounds on cache performance Otherwise derived timing bounds may be useless: I I
tasks are deemed not schedulable waste of hardware resources
Application: Buffers with transparent replacement I I I
Instruction- and data-caches Branch target buffers (BTB, BTIC) Translation lookaside buffers (TLB)
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
7 / 32
saarland university
Static Cache Analysis
computer science
derives approximations to cache contents at each program point in order to classify memory accesses as cache hits or cache misses
Must-information Underapproximation of cache contents Used to soundly classify cache hits
May-information Overapproximation of cache contents Used to soundly classify cache misses
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
8 / 32
saarland university
Outline 1
computer science
Introduction & Motivation Timing Analysis Cache Analysis
2
Abstract Interpretation of FIFO Challenge FIFO Replacement Domain Cooperation Must Analysis May Analysis
3
Evaluation Related Work Analysis Precision
4
Summary
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
9 / 32
saarland university
Concrete Semantics: What is FIFO?
computer science
State of FIFO cache of size k : s ∈ S := T k last-in
first-in
[t0 , . . . , tk −1 ] Examples: c
[d , c , b, a] −− → [d , c , b , a ] hit e
[d , c , b, a] −miss −→ [e, d , c , b] Update: US : S × T → S
US ([t0 , . . . , tk −1 ], t ) :=
Daniel Grund and Jan Reineke
[t0 , . . . , tk −1 ] : ∃i : t = ti [t , t0 , . . . , tk −2 ] : otherwise
Abstract Interpretation of FIFO
“cache hit” “cache miss”
Static Analysis Symposium 2009
10 / 32
saarland university
Challenge: How to Predict Hits?
computer science
Consider a FIFO cache with unknown contents a
b
a
b
[?, ?, ?, ?] −− → [?, a, ?, ?] −− → [?, a, ?, b] hit hit [?, ?, ?, ?] −− → [?, ?, ?, a] −miss −→ [b, ?, ?, ?] hit If a may be a hit, then b may evict a
⇒ Can only predict hits for most recently accessed element Can one do better? a
b
[?, ?, ?, ?] −miss −→ [a, ?, ?, ?] −miss −→ [b, a, ?, ?] If a is a miss, then b cannot evict a
⇒ Can predict hits for a until k further misses might have happened
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
11 / 32
saarland university
Challenge: How to Predict Hits?
computer science
Consider a FIFO cache with unknown contents a
b
a
b
[?, ?, ?, ?] −− → [?, a, ?, ?] −− → [?, a, ?, b] hit hit [?, ?, ?, ?] −− → [?, ?, ?, a] −miss −→ [b, ?, ?, ?] hit If a may be a hit, then b may evict a
⇒ Can only predict hits for most recently accessed element Can one do better? a
b
[?, ?, ?, ?] −miss −→ [a, ?, ?, ?] −miss −→ [b, a, ?, ?] If a is a miss, then b cannot evict a
⇒ Can predict hits for a until k further misses might have happened ⇒ Need may-information to obtain precise must-information Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
11 / 32
saarland
A Solution. Well, our Contributions
university
computer science
Framework for static cache analysis I I I
policy independent couples must- and may-analyses analyses cooperate via “update reduction”
FIFO must-analysis I I
can profit from may-information hence, also better must-information
FIFO may-analysis I I
utilizes order of hits and misses more precise than prior analyses
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
12 / 32
saarland university
Framework and Classification
Domain:
Fifo := Must × May
Classification:
Class := {H, M}>
computer science
H
: cache hit : cache miss > : unclassified H M
> M
CFifo : Fifo × T → Class CFifo ((must , may ), t ) := CMust (must , t ) u CMay (may , t )
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
13 / 32
saarland
Domain Cooperation via Update Reduction
(must , may )
S
Daniel Grund and Jan Reineke
Independent
university
computer science
(must 0 , may 0 )
S
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
14 / 32
saarland
Domain Cooperation via Update Reduction
(must , may )
Independent
university
computer science
(must 0 , may 0 )
γ
α
US
S
Daniel Grund and Jan Reineke
S
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
14 / 32
saarland university
Domain Cooperation via Update Reduction
(must , may )
γ
Independent
computer science
(must 0 , may 0 )
is imprecise
γ
α
α
US US
S
Daniel Grund and Jan Reineke
S
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
14 / 32
saarland
Domain Cooperation via Update Reduction
(must , may )
S
Daniel Grund and Jan Reineke
Best possible
university
computer science
(must 0 , may 0 )
S
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
14 / 32
saarland
Domain Cooperation via Update Reduction
(must , may )
γ
S
Daniel Grund and Jan Reineke
Best possible
university
computer science
(must 0 , may 0 )
γ
S
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
14 / 32
saarland
Domain Cooperation via Update Reduction
(must , may )
γ
S
Daniel Grund and Jan Reineke
Best possible
university
computer science
(must 0 , may 0 )
γ
S
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
14 / 32
saarland university
Domain Cooperation via Update Reduction
(must , may )
γ
Best possible
computer science
(must 0 , may 0 )
is infeasible
γ
α
α
US
S
Daniel Grund and Jan Reineke
S
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
14 / 32
saarland
Domain Cooperation via Update Reduction
(must , may )
S
Daniel Grund and Jan Reineke
Using classification
CFifo ((must , may ), t ) = M
university
computer science
(must 0 , may 0 )
S
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
14 / 32
saarland
Domain Cooperation via Update Reduction
(must , may )
γ
S
Daniel Grund and Jan Reineke
Using classification
CFifo ((must , may ), t ) = M
university
computer science
(must 0 , may 0 )
γ
S
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
14 / 32
saarland
Domain Cooperation via Update Reduction
(must , may )
γ
S
Daniel Grund and Jan Reineke
Using classification
CFifo ((must , may ), t ) = M
university
computer science
(must 0 , may 0 )
γM (t ) = {s ∈ S | t 6∈ s}
S
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
14 / 32
saarland
Domain Cooperation via Update Reduction
(must , may )
γ
Using classification
CFifo ((must , may ), t ) = M γM (t ) = {s ∈ S | t 6∈ s}
university
computer science
(must 0 , may 0 )
α
US
S
Daniel Grund and Jan Reineke
S
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
14 / 32
saarland university
Outline 1
computer science
Introduction & Motivation Timing Analysis Cache Analysis
2
Abstract Interpretation of FIFO Challenge FIFO Replacement Domain Cooperation Must Analysis May Analysis
3
Evaluation Related Work Analysis Precision
4
Summary
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
15 / 32
saarland university
Must-Analysis: Potential Misses
computer science
For FIFO, a newly inserted element is evicted after k misses
⇒ Maintain upper bound on number of misses: Potential misses Abstract must-domain closely resembles the concrete domain Must Fifok := [T0 , . . . , Tk −1 ] , where Ti ∈ P(T ), Ti ∩ Tj = ∅, and
P
| Ti | ≤ k .
t ∈ Ti ⇒ at most i misses since insertion of t Concretization example
γ([{f }, ∅, {a, c }, {b}]) = {[f , c , a, b] , [f , a, c , b]}
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
16 / 32
saarland university
Must-Analysis: Update
computer science
UMust : Must × T × Class → Must [∅, T0 , . . . , Tk −2 ∪ {t }] : cl = > : cl = H UMust ([T0 , . . . , Tk −1 ] , t , cl ) := [T0 , . . . , Tk −1 ] [{t }, T0 , . . . , Tk −2 ] : cl = M Misses classified by may-analysis Last case only possible due to domain cooperation
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
17 / 32
saarland university
Outline 1
computer science
Introduction & Motivation Timing Analysis Cache Analysis
2
Abstract Interpretation of FIFO Challenge FIFO Replacement Domain Cooperation Must Analysis May Analysis
3
Evaluation Related Work Analysis Precision
4
Summary
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
18 / 32
saarland university
May-Analysis: Definite Misses
computer science
How to predict misses?
⇒ Maintain lower bound on number of misses: Definite misses Initially, anything might be cached To classify a miss for an individual access, one needs to predict k other misses first
Lemma A newly inserted element is evicted after accesses to at most 2k − 1 pairwise different elements.
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
19 / 32
saarland university
May-Analysis: Idea “Early Misses” Initial state: [x , c , b, a]
m
Sequences of different length: I
computer science
ha, b, c , e, f , g , hi
eviction M
3 M
M
M insertion
0
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
M
H
1
Common final state: [h, g , f , e]
M
H
2
M
H
M H
1
M H M H
2
3 h
Static Analysis Symposium 2009
20 / 32
saarland university
May-Analysis: Idea “Early Misses” Initial state: [x , c , b, a]
m
Sequences of different length: I I
computer science
ha, b, c , e, f , g , hi he, f , g , hi
eviction M
3 M
M
M insertion
0
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
M
H
1
Common final state: [h, g , f , e]
M
H
2
M
H
M H
1
M H M H
2
3 h
Static Analysis Symposium 2009
20 / 32
saarland university
May-Analysis: Idea “Early Misses” Initial state: [x , c , b, a]
m
Sequences of different length: I I I
computer science
ha, b, c , e, f , g , hi he, f , g , hi ha, e, f , c , g , hi
eviction M
3 M
M
M insertion
0
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
M
H
1
Common final state: [h, g , f , e]
M
H
2
M
H
M H
1
M H M H
2
3 h
Static Analysis Symposium 2009
20 / 32
saarland university
May-Analysis: Idea “Early Misses” Initial state: [x , c , b, a]
m
Sequences of different length: I I I
computer science
ha, b, c , e, f , g , hi he, f , g , hi ha, e, f , c , g , hi
eviction M
3 M
M
M
⇒ Sequences differ in number of hits
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
insertion
0
M
H
1
Common final state: [h, g , f , e]
M
H
2
M
H
M H
1
M H M H
2
3 h
Static Analysis Symposium 2009
20 / 32
saarland university
May-Analysis: Idea “Early Misses” Initial state: [x , c , b, a]
m
Sequences of different length: I I I
computer science
ha, b, c , e, f , g , hi he, f , g , hi ha, e, f , c , g , hi
eviction M
3 M
M
M
⇒ Sequences differ in number of hits
insertion
0
M
H
1
Common final state: [h, g , f , e]
M
H
2
M
H
M H
1
M H M H
2
3 h
“Early misses” I I
preclude hits to thereby evicted elements reduce number of possible accesses between insertion and eviction
⇒ Order of hits and misses is important
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
20 / 32
saarland university
May-Analysis: Domain
computer science
May analysis approximates position in triangle Unclassified access → “take the longer way” dm 3 M
H,M,>
H,>
2 M
M
M
H,>
0
H,> H,M,>
M H,>
1
H,M,>
M
H,>
1
H,>
2
3 cw
For each element t, the analysis maintains: A Set of Potentially Accessed Elements dm Number of Definite Misses cw Number of Covered Ways (Covered Cache Positions) Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
21 / 32
saarland university
May-Analysis: Example
computer science
dm 3 M
H,M,>
H,>
2 M
M
M
H,>
0
H,> H,M,>
M H,>
1
H,M,>
M
H,>
1
H,>
2
3 cw
Assume sequence hx , a, b, c i and all accesses are unclassified Then for x one has: A = {a, b, c } a, b and c might have been accessed since the last insertion of x dm = 0 0 misses have definitely happened since the last insertion of x cw = 3 Assuming that all unclassified accesses were hits, then 3 elements of A must be cached
Consider next access to d Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
22 / 32
saarland university
Outline 1
computer science
Introduction & Motivation Timing Analysis Cache Analysis
2
Abstract Interpretation of FIFO Challenge FIFO Replacement Domain Cooperation Must Analysis May Analysis
3
Evaluation Related Work Analysis Precision
4
Summary
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
23 / 32
saarland university
Relative Competitiveness
computer science
How many misses would FIFO have if LRU has mLRU misses?
Definition: Relative Competitiveness Policy P is (f , c ) miss-competitive relative to policy Q if mP (p, s) ≤ f · mQ (q , s) + c for all access sequences s and compatible cache states p, q. E.g. LRU(2k − 1) is (1, 0) miss-competitive vs. FIFO(k )
⇒ LRU(2k − 1) may-analysis can be used for FIFO(k ) may analysis
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
24 / 32
saarland university
Evaluation Setup
computer science
Must-analysis: CM Canonical must-analysis (this paper)
May-analyses: No None RC Based on relative competitiveness EMX Early Miss eXploitation (this paper)
Instantiations of cache analysis framework: I I I
No+CM RC+CM EMX+CM
Synthetic benchmarks: I
Random access sequences and program fragments
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
25 / 32
saarland university
Evaluation Results 100
computer science
% No+CM
90
RC+CM
80
EMX+CM
70
CollSem
60
100% ff
50
Misses
40
ff
30
ff
Unclassified Hits
20
0%
10 0
1
5
8
10
15
20
25
30
n
Average guaranteed hit- and miss-rates for a cache of size 8 n is number of pairwise different elements that are accessed Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
26 / 32
saarland university
Outline 1
computer science
Introduction & Motivation Timing Analysis Cache Analysis
2
Abstract Interpretation of FIFO Challenge FIFO Replacement Domain Cooperation Must Analysis May Analysis
3
Evaluation Related Work Analysis Precision
4
Summary
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
27 / 32
saarland university
Summary
computer science Using classification
(must , may )
Cache analysis framework I I
CFifo ((must , may ), t ) = M γM (t ) = {s ∈ S | t 6∈ s}
γ
Couple several analyses Cooperation via classifications
I
Potential misses
S
UMust ([T0 , . . . , Tk −1 ] , t , cl ) := 8 < [∅, T0 , . . . , Tk −2 ∪ {t }] : cl = > [T0 , . . . , Tk −1 ] : cl = H : [{t }, T0 , . . . , Tk −2 ] : cl = M
m
EMX FIFO may-analysis
eviction M
3 M
I I
Definite misses Early Miss eXploitation
M
0
Abstract Interpretation of FIFO
M
H
1 insertion
M
H
2
M
Daniel Grund and Jan Reineke
α
US
S
Canonical FIFO must-analysis
(must 0 , may 0 )
M
H
H
1
M H
M
M H
2
3 h
Static Analysis Symposium 2009
28 / 32
saarland university
Summary
computer science Using classification
(must , may )
Cache analysis framework I I
CFifo ((must , may ), t ) = M γM (t ) = {s ∈ S | t 6∈ s}
γ
Couple several analyses Cooperation via classifications
I
Potential misses
S
UMust ([T0 , . . . , Tk −1 ] , t , cl ) := 8 < [∅, T0 , . . . , Tk −2 ∪ {t }] : cl = > [T0 , . . . , Tk −1 ] : cl = H : [{t }, T0 , . . . , Tk −2 ] : cl = M
m
EMX FIFO may-analysis
eviction M
3 M
I I
α
US
S
Canonical FIFO must-analysis
(must 0 , may 0 )
Definite misses Early Miss eXploitation
M
M
0
M
H
1 insertion
M
H
2
M
H
H
1
M H
M
M H
2
3 h
Thank you for listening. Questions? Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
28 / 32
saarland university
Further Reading
computer science
R. Wilhelm et al. The worst-case execution time problem— overview of methods and survey of tools Transactions on Embedded Computing Systems, 7(3), 2008 J. Reineke and D. Grund Relative competitive analysis of cache replacement policies LCTES 2008
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
29 / 32
saarland university
Related Work: LRU Analyses
computer science
Bounds on number of cache misses: Ghosh Cache Miss Equations, loop nests Chatterjee Exact model of cache behavior for loop nests Classification of individual accesses: Mueller By “static cache simulation” Li By integer linear programming Ferdinand By abstract interpretation Only for LRU caches
Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
30 / 32
saarland university
What About The Gap for n ≤ k ? 100
computer science
%
90 80 70 60 50 40 30 20 10 0
1
5
Daniel Grund and Jan Reineke
8
10
15
20
Abstract Interpretation of FIFO
25
30
n
Static Analysis Symposium 2009
31 / 32
saarland
Does the Initial Cache State Make a Difference?
university
computer science
Yes, a FIFO of size k , is (k ,k ) sensitive
Definition: Sensitivity Policy P is (f , c ) miss-sensitive if mP (p, s) ≤ f · mP (p0 , s) + c for all access sequences s and all cache states p, p0 .
⇒ For FIFO of size 4, execution time may differ by a factor of 3 R. Wilhelm et al. Memory Hierarchies, Pipelines, and Buses for Future Architectures in Time-critical Embedded Systems IEEE Transactions on CAD of Integrated Circuits and Systems 2009 Daniel Grund and Jan Reineke
Abstract Interpretation of FIFO
Static Analysis Symposium 2009
32 / 32