INtime Tech

INtime Top


ó¸® ½Ã°£ÀÇ °èÃø


  • °èÃø ¼ö´Ü 1. INscope À¯Æ¿¸®Æ¼·Î °èÃø
  • °èÃø ¼ö´Ü 2. ¹Ð¸® ¼¼ÄÁµå Á¤µµ·ÎÀÇ Ã³¸® ½Ã°£ °èÃø
  • °èÃø ¼ö´Ü 3. ³ª³ëÃÊÁ¤µµ·ÎÀÇ Ã³¸® ½Ã°£ °èÃø
  • °èÃø ¼ö´Ü 4. ¿ÜºÎ ½ÅÈ£ Ãâ·Â°ú ÃøÁ¤±â¿¡ ÀÇÇÑ Ã³¸® ½Ã°£ °èÃø
  • CPU Ŭ¶ô Ä«¿îÅ͸¦ °èÃø¿¡ ÀÌ¿ëÇÒ ¼ö ¾ø´Â CPU¿¡ ´ëÇØ
  •  

    »ùÇà ÄÚµå

     

    °èÃø ¼ö´Ü 1. INscope À¯Æ¿¸®Æ¼·Î °èÃø

    ºÎ¼ÓµÇ´Â INscope À¯Æ¿¸®Æ¼¿¡¼­´Â, RT½º·¹µåÀÇ µ¿ÀÛ Å¸À̹ÖÀ̳ª ó¸® ½Ã°£À» ±×·¡ÇÇÄÃÇÏ°Ô ¼öÁý·°èÃøÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ±â´ÉÀ» ÀÌ¿ëÇϱâ À§Çؼ­´Â Ç×»ó ÀÏÁ¤ÇÑ CPU Ŭ¶ôÀÌ °ø±ÞµÇ°í ÀÖ´Â °ÍÀÌ ÀüÁ¦°¡ µÇ±â À§ÇØ SpeedStep ±â´ÉÀ» °¡Áö´Â ÄÄÇ»ÅÍ¿¡¼­´Â ¿Ã¹Ù¸¥ °èÃøÀ» ÇÒ ¼ö ¾ø½À´Ï´Ù

     

    °íµµÀÇ ÀÌ¿ë ¹æ¹ýÀ¸·Î¼­ ¾îÇø®ÄÉÀÌ¼Ç Äڵ忡 INscope API¸¦ ¹¯´Â °Í¿¡ ÀÇÇØ¼­ INscopeÀÇ Æ®·¹À̽º °á°ú¿¡ À̺¥Æ® ¸¶Å©¸¦ ³²±æ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¹æ¹ýÀ» »ç¿ëÇÏ·Á¸é ´ÙÀ½°ú °°ÀÌ ÇÕ´Ï´Ù.

    1. ó¸® ½Ã°£À» °èÃøÇÏ°í ½ÍÀº ¾îÇø®ÄÉÀÌ¼Ç Äڵ忡#include <traceapi.h>¸¦ µ¡ºÙ¿© ¾¸ ÇÕ´Ï´Ù. ÀÌ Çì´õ ÆÄÀÏÀº <INtimeInstallPath>\rt\include¿¡ ÀÖ½À´Ï´Ù.¾îÇø®ÄÉÀ̼ÇÀÇ ÇÁ·ÎÁ§Æ®¿¡ traceapi.lib¸¦ ¸µÅ©Çϵµ·Ï ÇÕ´Ï´Ù. ÀÌ ¶óÀ̺귯¸® ÆÄÀÏÀº <INtimeInstallPath>\rt\lib¿¡ ÀÖ½À´Ï´Ù.
    2. INscopeÀÇ Æ®·¹À̽º °á°ú¿¡ ¸¶Å©¸¦ ³²±â°í ½ÍÀº ¿ø½Ã ÄÚµåÀåÀÇ À§Ä¡¿¡, log_RT_event( '1' , 0 ); (¿Í)°ú °°ÀÌ µ¡ºÙ¿© ¾¸´Ï´Ù. ¹®ÀÚ(¿¹¿¡¼­´Â'1')´Â ÀÓÀÇ·Î ÁöÁ¤ °¡´ÉÇÏ°í Æ®·¹À̽º °á°ú¿¡ »ç¿ëµË´Ï´Ù.
    3. ºôµå ÇÑ ¾îÇø®ÄÉÀ̼ÇÀ» ½ÇÇàÇØ, INscope·Î Æ®·¹À̽º¸¦ °³½ÃÇϸé ÁöÁ¤ÇÑ ¸¶Å©°¡ ±â·ÏµË´Ï´Ù.

     

                  °ü·Ã Á¤º¸  µð¹ö°Å¿¡ ´ëÇØ #INscope

     

    °èÃø ¼ö´Ü 2. ¹Ð¸® ¼¼ÄÁµå Á¤µµ·ÎÀÇ Ã³¸® ½Ã°£ °èÃø

    ¹Ð¸® ¼¼ÄÁµå Á¦µµÀÇ °èÃø¿¡´Â INtime ½Ã½ºÅÛ ÄÝ,knGetKernelTime( )ÀÌ À¯È¿ÇÕ´Ï´Ù.ÀÌ ÄÝÀº INtime Ä¿³ÎƽÀÌ ¹ß»ýÇÒ ¶§¸¶´Ù ÀÎÅ©¸®¸ÕÆ®(increment) µÇ´Â 64 bit Ä«¿îÅÍÄ¡¸¦ ²¨³¾ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¸ Ä¿³Îƽ ÁÖ±â´Â À籸¼º °¡´ÉÇϱ⠶§¹®¿¡, ÇöÀçÀÇ Ä¿³Îƽ ¼³Á¤Ä¡´ÂCopyRtSystemInfo( )¿¡ ÀÇÇØ¼­ ¹Ì¸® ¾ò½À´Ï´Ù.

    ¹Ð¸® ¼¼ÄÁµå~ÃÊÁ¤µµÀÇ °èÃø¿¡´Â INtime ½Ã½ºÅÛ ÄÝ, knGetKernelTime( )ÀÌ À¯È¿ÇÕ´Ï´Ù. ÀÌ ÄÝÀº INtime Ä¿³ÎƽÀÌ ¹ß»ýÇÒ ¶§¸¶´Ù ÀÎÅ©¸®¸ÕÆ®(increment) µÇ´Â 64 bit Ä«¿îÅÍÄ¡¸¦ ²¨³¾ ¼ö Àֱ⠶§¹®¿¡, ¼Ò¿äÇÑ Ä¿³Îƽ¼ö·ÎºÎÅÍ Ã³¸®¿¡ °É¸®´Â ½Ã°£À» ¿ä±¸ÇÕ´Ï´Ù. Ä¿³Îƽ ½Ã°£ ÀÌÇÏÀÇ °èÃøÀº ÇÒ ¼ö ¾ø´Â Á¡¿¡ ÁÖÀǰ¡ ÇÊ¿äÇÕ´Ï´Ù. ¶Ç Ä¿³Îƽ ½Ã°£Àº À籸¼º °¡´ÉÇϱ⠶§¹®¿¡, Ä¿³Îƽ °³¼ö·ÎºÎÅÍ ±¸ÇÒ ¼ö ÀÖ´Â ½Ã°£Àº Çϳª Á¤µµ°¡ ¾Æ´Ñ °Í¿¡ ÁÖÀÇÇÕ´Ï´Ù. ÇöÀçÀÇ Ä¿³Îƽ¼³Á¤Ä¡´Â CopyRtSystemInfo( )¿¡ ÀÇÇØ¼­ ¿ä±¸ÇÒ ¼ö ÀÖ½À´Ï´Ù.

     

    SYSINFO         sysinfo;
        DWORD           dwKtickInUsecs ,dwKtickInMsecs;
        QWORD           qStart, qEnd ,qDiff;
     
        // Àú·¹º§Æ½Ä¡(¸¶ÀÌÅ©·Î ¼¼ÄÁµå ´ÜÀ§)¸¦ ÃëµæÇÕ´Ï´Ù
        CopyRtSystemInfo(&sysinfo);
        dwKtickInUsecs  = 10000 / sysinfo.KernelTickRatio;
        dwKtickInMsecs  = 1000 / dwKtickInUsecs;
        printf( "%dticks/ms\n" ,dwKtickInMsecs );
     
     
        // ó¸® °³½Ã½Ã°¢ÀÇ Ãëµæ
        knGetKernelTime( (LPKNTIME) &qStart );
     
          ToDo( );
     
        // ó¸® Á¾·á½Ã°¢ÀÇ Ãëµæ
        knGetKernelTime( (LPKNTIME) &qEnd );
     
        // ó¸® ½Ã°£ÀÇ »êÃâ(ms´ÜÀ§)
        qDiff = (qEnd - qStart) / dwKtickInMsecs;

     

    °èÃø ¼ö´Ü 3. ³ª³ëÃÊÁ¤µµ·ÎÀÇ Ã³¸® ½Ã°£ °èÃø

    Pentium CPU°¡ ³»ºÎ¿¡ °¡Áö´Â 64 bitÀÇ ÆÛÆ÷¸Õ½º Ä«¿îÅÍ ·¹Áö½ºÅÍ(ŸÀÓ ½ºÅÆÇÁ Ä«¿îÅÍ)¸¦ ÀÌ¿ëÇϸé, ³ª³ëÃÊÁ¤µµ·ÎÀÇ °èÃøµµ °¡´ÉÇÕ´Ï´Ù. ÀÌ ¹æ¹ýÀº °èÃø ¼ö´Ü 1¿¡¼­µµ ÀÌ¿ëµÇ°í ÀÖ´Â ¹æ¹ýÀÔ´Ï´Ù. ÀÌ ±â´ÉÀ» ÀÌ¿ëÇϱâ À§Çؼ­´Â Ç×»ó ÀÏÁ¤ÇÑ CPU Ŭ¶ôÀÌ °ø±ÞµÇ°í ÀÖ´Â °ÍÀÌ ÀüÁ¦°¡ µÇ¹Ç·Î SpeedStep ±â´ÉÀ» °¡Áö´Â ÄÄÇ»ÅÍ¿¡¼­´Â ¿Ã¹Ù¸¥ °èÃøÀ» ÇÒ ¼ö ¾ø½À´Ï´Ù

     

    // CPU Ŭ¶ô Ä«¿îÅÍÀÇ Ãëµæ(SpeedStep ±â´ÉÀÌ ÀÖ´Â CPU¿¡¼­´Â ÀÌ¿ëÇÒ ¼ö ¾ø½À´Ï´Ù)
        _int64 GetPentiumCounter(void)
        {
            _asm    rdtsc
        }
     
        // CPU ¼ÓµµÀÇ °èÃø( Hz )
        DWORD GetCPUSpeed(void)
        {
            _int64     start ,end ,def;
     
            RtSleep( 10 );
            start   = GetPentiumCounter();
            RtSleep( 100 );
            end     = GetPentiumCounter();
            def     = end - start ;
            return( (DWORD) def * 10 );
        }
     
        // ó¸® ½Ã°£ÀÇ »êÃâ( nano second )
        double CalcTime( _int64 start ,_int64 end ,double clk )
        {
            return ((double)(end - start) * clk);
        }
     
        /*****************************************************************************
        *
        * FUNCTION:         main
        *
         *****************************************************************************/
        void                main(void)
        {
            _int64  start ,end;
            DWORD   cpuHz;
            double  clk;
     
            // ÇöÀçÀÇ CPU ¼Óµµ
            cpuHz   = GetCPUSpeed();
            clk     = (double) 1000000000 / (double) cpuHz;
     
            printf("CPU speed is %.1f Hz\n" ,(float) cpuHz );
            printf("clk is %.10f nano second\n" ,clk );
     
            // ó¸® ½Ã°£ÀÇ °èÃø
            start   = GetPentiumCounter();
     
                ToDo();
     
            end     = GetPentiumCounter();
     
            // ó¸® ½Ã°£ÀÇ »êÃâ·Ç¥½Ã
            printf( "ó¸® ½Ã°£ = %.5f(ns) \n" ,CalcTime( start ,end ,clk ) );
        }

     

    °èÃø ¼ö´Ü 4. ¿ÜºÎ ½ÅÈ£ Ãâ·Â°ú ÃøÁ¤±â¿¡ ÀÇÇÑ Ã³¸® ½Ã°£ °èÃø

    °èÃø ¼ö´Ü 1~3ÀÇ ¼ÒÇÁÆ®ÀûÀÎ ¹æ¹ýÀ¸·Î ½Åºù¼ºÀ» ¾òÀ» ¼ö ¾ø´Â °æ¿ì³ª, º¸´Ù ¾ö¹ÐÇÑ °èÃøÀ» ½Ç½ÃÇÏ°í ½ÍÀº °æ¿ì´Â, ¸ñÀûÀÇ Ã³¸®ÀÇ ÀüÈÄ·Î µðÁöÅ» ½ÅÈ£ Ãâ·Â Á¦¾î¸¦ ½Ç½ÃÇØ, ÀÌ Ãâ·Â ÆÄÇüÀ» ÃøÁ¤±â(¿À½Ç·Î½ºÄÚÇÁ(oscilloscope)³ª logic analyzer)·Î °èÃøÇÏ´Â ¹æ¹ýÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
    ÀϹÝÀûÀÎ °ø¾÷¿ë PC¿¡¼­´Â Ç¥ÁØ ½Ã¸®¾ó Æ÷Æ®³ª, ÆÐ·¯·¼ Æ÷Æ®¸¦ ½ÇÀåÇϰí ÀÖ´Â ¿¹°¡ ¸¹¾Æ, ÀÌ·¯ÇÑ Ãâ·Â Æ÷Æ®¿¡ ±¸ÇüÆÄ¸¦ Ãâ·Â Á¦¾îÇÏ´Â °Í¿¡ ÀÇÇØ¼­ ÃøÁ¤À» ½ÇÇöÇÕ´Ï´Ù.

    • ÆÐ·¯·¼ Æ÷Æ®(D0ºñÆ®)¿¡ ó¸® °³½Ã~Á¾·á±îÁöÀÇ »çÀÌ ±¸ÇüÆÄ¸¦ Ãâ·ÂÇÏ´Â ¿¹
       // Pin2(D0) -Pin25(GND) °£¿¡ ÀüÀ§Â÷¸¦ ÁØ´Ù 
       outbyte
      ( 0 x378 , 0 x01 );
       
       
      ToDo();
       
       
      // Pin2(D0) -Pin25(GND) °£¿¡ ÀüÀ§Â÷¸¦ ¾ø¾Ø´Ù. outbyte( 0 x378 , 0 x00 );
     
    • ½Ã¸®¾ó Æ÷Æ®(DTR ½ÅÈ£)¿¡ ó¸® °³½Ã~Á¾·á±îÁöÀÇ »çÀÌ ±¸ÇüÆÄ¸¦ Ãâ·ÂÇÏ´Â ¿¹
       // Pin4(DTR) -Pin5(GND) °£¿¡ ÀüÀ§Â÷¸¦ ÁØ´Ù
       outbyte
      ( 0 x3fc , 0 x01 );
       
       
      ToDo();
       
       
      // Pin4(DTR) -Pin5(GND) °£¿¡ ÀüÀ§Â÷¸¦ ¾ø¾Ø´Ù. outbyte( 0 x3fc , 0 x00 );
     
    • °èÃø¿ë ÄÉÀ̺íÀÇ Áغñ °èÃø¿ëÀÇ ½ÅÈ£ ÀÎÃâ ¿¬°á±â¸¦ Á¦ÀÛÇØ µÎ¸é Æí¸®ÇÕ´Ï´Ù. »çÁøÀº ÆÐ·¯·¼ Æ÷Æ®(DSUB-25 Pin)ÀÇ Pin2(D0)¿Í Pin25(GND)¸¦ ²¨³» ÀÖ´Â ¿¬°á±âÀÇ ¿¹ÀÔ´Ï´Ù. ÀÌ ¾ç´Ü¿¡ ¿À½Ç·Î½ºÄÚÇÁ(oscilloscope)³ª, µðÁöÅ» logic analyzer¸¦ Á¢¼ÓÇØ ó¸® ½Ã°£À» °èÃøÇÕ´Ï´Ù

     

    CPU Ŭ¶ô Ä«¿îÅ͸¦ °èÃø¿¡ ÀÌ¿ëÇÒ ¼ö ¾ø´Â CPU¿¡ ´ëÇØ

    CPU Ŭ¶ô Ä«¿îÅÍ(ŸÀÓ ½ºÅÆÇÁ Ä«¿îÅÍ)´Â Pentium ÀÌÈÄÀÇ CPU¿¡ ½ÇÀåµÇ°í ÀÖ´Â ±â´ÉÀÔ´Ï´Ù. 64-bitÀÇ Ä«¿îÅÍÀ̸ç, ÇÁ·Î¼¼¼­ÀÇ ¸®¼ÂÆ®¿¡ ÀÇÇØ 0À¸·Î ¼³Á¤µÇ¾î ±× ÈÄ, ÀÎÅ©¸®¸ÕÆ®(increment) µË´Ï´Ù. ÀÌ ±â´ÉÀº ÀϹÝÀûÀ¸·Î µð¹ö±×³ª ¸ð´ÏÅ͸µ¿¡ »ç¿ëµÇ´Â ±â´ÉÀÔ´Ï´Ù¸¸, ÀÌÇÏÀÇ ÇÁ·Î¼¼¼­ ÆÐ¹Ð¸®¿¡ ÀÖ°í, ó¸® ½Ã°£ °èÃø¿¡ »ç¿ëÇÒ ¼ö ¾ø´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù£º

    • Pentium MÇÁ·Î¼¼¼­(Family[06 H] MODELS [09 H, 0 DH])
    • Pentium 4/ Xeon ÇÁ·Î¼¼¼­(Family[0 FH] MODELS[00 H 01 H ¶Ç´Â 02 H])
    • P6 Family ÇÁ·Î¼¼¼­

    »ó±â CPU½Ã¸®Áî¿¡¼­´Â ÇÁ·Î¼¼¼­ÀÇ Å¬¶ô »çÀÌŬ(ÄÚ¾î Ŭ¶ô-¹ö½º Ŭ·° ºñÀ²¿¡ ÀÇÇØ °áÁ¤) ¸¶´Ù Ä«¿îÅ͸¦ ÀÎÅ©¸®¸ÕÆ®(increment) ÇÕ´Ï´Ù¸¸, Intel(R) SpeedStep Å×Å©³î·¯Áö¿¡ ÀÇÇØ ÇÁ·Î¼¼¼­ Ŭ¶ôÀ» º¯µ¿ÇÏ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù. ÂüÁ¶ Intel±â¼ú ¹®¼­¡¸Intel 64 and IA-32 Architectures Software Developer's Manual Volume 3 B¡¹

     

     

    »ùÇà ÄÚµå

    °èÃø ¼ö¹ý 3¿¡ ÀÇÇÑ ¼ÒÇÁÆ®ÀûÀÎ ÃøÁ¤ ¼ö´ÜÀÇ »ùÇÃ
    filePerfo.lzh ... VisualStudio6. 0 project
    filePerfo2005.lzh ... VisualStudio2005project
    filePerfo2008.lzh ... VisualStudio2008project


    HOME | INtime