B. Gonzalez Kriegel - N. Wolovick
|
|
Construya la tabla y el diagrama de transición de estados para esta máquina de estados finitos.
Tag<20> | Set<7> | Word<3> | |||||||||||||||||||||||||||||
  |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | 0 | 0 |
Dado el siguiente programa:
.org 4096 sethi 0, %r3 add %r0, 60, %r1 loop: ld %r1,%r2 xor %r3, %r2, %r3 addcc %r1, -4, %r1 bpos loop jmpl %r15+4, %r0 |
Tag<22> | Set<5> | Word<3> | |||||||||||||||||||||||||||||
  |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | 0 | 0 |
En la primera parte este programa se presenta una función para obtener una medición precisa del tiempo. En la segunda parte, un arreglo se lee y escribe en rangos crecientes de longitud y por cada uno de estos rangos se hacen accesos de a saltos (strides) cada vez más grandes, desde hasta . El código se repite varias veces a fin de obtener mayor precisión en la medición.
La tercera parte repite exactamente el mismo lazo pero no efectua operaciones con la memoria para poder medir y luego restar el tiempo de overhead que tiene la repetición. La parte final imprime los tiempos de acceso de la memoria para cada tamaño y salto.
Resulta importante asegurar que el compilador hace caso al modificador register, a fin de no interferir la memoria con lecto-escrituras de las variables que controlan los lazos.