Instrução RDTSC
DEPARTAMENTO DE COMPUTAÇÂO
Igor Profeta Silveira
Matricula: 201310035378
Trabalho de OAC
Instrução RDTSC
São Cristóvão, 2014
Aluno: Igor Profeta Silveira.
Instrução RDTSC (Read Time Stamp Counter)
a)O que é a instrução?
A instrução RDTSC é uma instrução para monitorar o desempenho da maquina. Ela lê quantos ciclos estão armazenados num registrador especifico o TSC (Time-Stamp Counter) de 64 bits.
Esse registrador esta presente em todos os processadores x86 e é acessível ao programador desde o processador Intel Pentium. Para ter acesso ao TSC é possível por meio da instrução em assembly RDTSC. Ela é muito útil para monitorar o desempenho de pequenas seções do código. Ele também pode ser usado para medir o tempo médio de execução para uma função ou seção do código.
b) Sua sintaxe e forma de operação
Para chamar a instrução RDTSC é necessário estar num código assembly. A linguagem C permite utilizar o assembly inline, portanto é possível utilizá-la usando a seguinte sintaxe: asm(“rdtsc”); A maneira que essa instrução funciona é armazenando a alta ordem de 32 bits do registro no registrador EDX, e a baixa ordem de 32 bits no registrador EAX. Como o TSC conta os ciclos de
CPU, o valor devolvido pela instrução RDTSC será o número de ciclos contados a partir da ultima reposição do processador até a chamada do RDTSC. Para obter o tempo em segundos, o valor fornecido pelo TSC tem de ser dividido com a frequência do processador (em Hz).
c) Aplicação com RDTSC
#include
double tempo; int ciclos, subtempo, uptempo, subtempoi, uptempoi, subtempof, uptempof; int frequencia; main(){ // Digite a frequencia da sua maquina em hz frequencia=2000000000; tempo=0; subtempoi=0; uptempoi=0; subtempof=0; uptempof=0; int i=0; printf("Digite 0 para iniciar e 1 para parar:\n"); scanf("%d",&i); while(i==0){
//****************Inicio ASSEMBLY***************** asm(".intel_syntax noprefix");