精华内容
下载资源
问答
  • CMOS 内存和实时时钟

    千次阅读 2010-02-10 20:09:00
    第15章 CMOS 内存和实时时钟 笔记简介 系统带有一个小型的CMOS内存,其中保存着系统断电时的数据。该内存用来记录软盘的类型和数目、硬盘大小信息、内存大小以及其他重要的系统数据。CMOS芯片还含有一个实时时钟...

    第15章 CMOS 内存和实时时钟 笔记

    简介
        系统带有一个小型的CMOS内存,其中保存着系统断电时的数据。该内存用来记录软盘的类型和数目、硬盘大小信息、内存大小以及其他重要的系统数据。CMOS芯片还含有一个实时时钟(RTC),用来保持当前时间。关掉电源时,RTC由计算机内部的电池供电。电池保持时钟处于活动状态,以及保留CMOS内存内容。如果在断电时电池无法正常供电,将丢失CMOS内容。在BIOS系统上电自检(POST)期间,大多数BIOS会识别出这一点。

     

         实时时钟(RTC)的常用信息有十个寄存器用来访问RTC时间和数据。所有的时钟寄存器采用BCD (二进制编码的十进制)格式。

    另外四个寄存器用来保存时钟、闹钟和CMOS内存的状态和控制信息。状态和控制寄存器称作寄存器A、B、C和D 。RTC有许多古怪之处,要求专门的编程来保证访问可靠。使用下面描述的RTC BIOS来避免这些令人头疼的问题,我极力推荐这样做.通过I/O端口70h装入任何数据或时间寄存器时,必须停止时钟。这一点可以防止在设置新的日期或时间期间更新寄存器。要停止时钟,可以将寄存器B的第7位设置为1。更新完成时,将寄存器B的第7位设置为0来激活时钟。


    警告
        中断 在访问CMOS寄存器时必须禁止所有的中断。访问一个CMOS寄存器时,端口70h用于选择使用哪个寄存器。然后通过端口71h读或写这个寄存器。如果在两个I/O端口访问之间出现了中断,并且中断处理程序会访问CMOS,你的代码将会读或写错误的寄存器。
               除了禁止中断之外,还要禁止不可屏蔽中断(NMI)。NMI主要用于陷入RAM奇偶错误和数字协处理错误。在访问CMOS时很可能出现这些情况。不幸的是,NMI禁止是一个只写标志,所以前面的状态无法知道。每个人常用的方法是假定NMI是开放的,这就意味着在访问CMOS后总会开放NMI。
              在观察访问一个CMOS寄存器的步骤时,你必须首先使用CLI指令禁止中断。选择CMOS寄存器时应禁止了NMI,恰巧由端口70H的位7控制NMI,这个端口和指定CMOS寄存器的端口相同。CMOS访问完成时,再次写端口70h,并清除位7,来重新开放NMI。
    然后使用STI指令来开放一般的中断。在下面的程序READ_CMOS 和 WRITE_CMOS 中考虑了以上这些问题。

    (有些chipset支持256 bytes的cmos ram,访问128bytes以后的空间需要开启chipset的始能register,有些chipset使用72h,73h访问扩展的空间如intel chipset,有些仍然使用70h,71h如sis chipset) 

     

    代码例15-1 读CMOS
    ;----------------------------------
    ;READ_CMOS
    ;读取指定CMOS寄存器的内容

    ;调用:al=要读取的CMOS地址

    ;返回:ah=寄存器的内容
    ;          开放NMI,如果禁止
    read_cmos  proc  near
      or al, 80h    ;禁止NMI
      cli               ;禁止中断
      out 70h,al   ;要读取的寄存器
      IODELAY
      in al, 71h    ;返回寄存器的内容
      mov ah,al
      mov al,0
      IODELAY
      out 70h,al   ;开放NMI
      sti               ;开放中断
      ret
    read_cmos endp

     

     

    代码例 15-2 写CMOS
    ;-------------------------------
    ; WRITE_CMOS
    ;
    ; 调用:al=要写入的CMOS寄存器
    ;       ah=要写入的值
    ;
    ; 返回:NMI开放,如果禁止

    write_CMOS proc near
      cli                ;禁止中断
      or  al,80h    ;禁止NMI
      out 70h,al   ;al=要写的寄存器
      mov al,ah
      IODELAY
      out 71h,al   ;写寄存器
      mov al,0
      IODELAY
      out 70h,al   ;开放NMI
      sti               ;开放中断
      ret
    write_cmos endp

     

    CMOS 求和校验
          许多BIOS供应商,例如AMI和Phoenix,将从10h到2Dh的CMOS寄存器加起来,并将这个和值字保存在寄存器2Eh和2Fh中。寄存器2Eh保存着高位校验字节,而寄存器2Fh保存着低位校验字节。

         网上有很多盛传的用debug 命令破解CMOS密码的方法,正是基于此原理,利用破坏CMOS的校验值来达到清除CMOS密码的目的。

    展开全文
  • 从 Facebook 的开源代码(Device Year Class)抽取了一些 Android 编码中的常用功能 - 获取 CPU 核数、时钟频率、内存大小。
    watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0ZlZUxhbmc=,size_16,color_FFFFFF,t_70

    因项目需要,分析了一下 Facebook 的开源项目 - Device Year Class

    Device Year Class 的主要功能是根据 CPU核数时钟频率 以及 内存大小 对设备进行分级。代码很简单,只包含两个类:

    • DeviceInfo -> 获取设备参数,
    • YearClass -> 根据参数进行分级。

    下表是 Facebook 公司提供的分级标准,其中 Year 栏表示分级结果。

    Year Cores Clock RAM
    2008 1 528MHz 192MB
    2009 n/a 600MHz 290MB
    2010 n/a 1.0GHz 512MB
    2011 2 1.2GHz 1GB
    2012 4 1.5GHz 1.5GB
    2013 n/a 2.0GHz 2GB
    2014 n/a >2GHz >2GB

    关于输出年份的计算方法可以参考源码,本文只把一些比较常用的功能抽取出来做一个简要介绍。

    获取 CPU 核数

    我们都知道,Linux 中的设备都是以文件的形式存在,CPU 也不例外,因此 CPU 的文件个数就等价与核数

    Android 的 CPU 设备文件位于 /sys/devices/system/cpu/ 目录,文件名的的格式为 cpu\d+

    root@generic_x86_64:/sys/devices/system/cpu # ls
    cpu0
    cpufreq
    cpuidle
    kernel_max
    modalias
    offline
    online
    possible
    power
    present
    uevent
    

    统计一下文件个数便可以获得 CPU 核数。

    public static int getNumberOfCPUCores() {
      if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.GINGERBREAD_MR1) {
        // Gingerbread doesn't support giving a single application access to both cores, but a
        // handful of devices (Atrix 4G and Droid X2 for example) were released with a dual-core
        // chipset and Gingerbread; that can let an app in the background run without impacting
        // the foreground application. But for our purposes, it makes them single core.
        return 1;
      }
      int cores;
      try {
        cores = new File("/sys/devices/system/cpu/").listFiles(CPU_FILTER).length;
      } catch (SecurityException e) {
        cores = DEVICEINFO_UNKNOWN;
      } catch (NullPointerException e) {
        cores = DEVICEINFO_UNKNOWN;
      }
      return cores;
    }
    
    private static final FileFilter CPU_FILTER = new FileFilter() {
      @Override
      public boolean accept(File pathname) {
        String path = pathname.getName();
        //regex is slow, so checking char by char.
        if (path.startsWith("cpu")) {
          for (int i = 3; i < path.length(); i++) {
            if (path.charAt(i) < '0' || path.charAt(i) > '9') {
              return false;
            }
          }
          return true;
        }
        return false;
      }
    };
    

    获取时钟频率

    获取时钟频率需要读取系统文件 - /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq 或者 /proc/cpuinfo

    我的 Android 模拟器中并没有 cpuinfo_max_freq 文件,因此只能读取 /proc/cpuinfo

    /proc/cpuinfo 包含了很多 cpu 数据。

    processor	: 0
    vendor_id	: GenuineIntel
    cpu family	: 6
    model		: 70
    model name	: Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz
    stepping	: 1
    cpu MHz		: 0.000
    cache size	: 1024 KB
    fdiv_bug	: no
    hlt_bug		: no
    f00f_bug	: no
    coma_bug	: no
    fpu		: yes
    fpu_exception	: yes
    cpuid level	: 4
    wp		: yes
    

    代码如下:

    public static int getCPUMaxFreqKHz() {
      int maxFreq = DEVICEINFO_UNKNOWN;
      try {
        for (int i = 0; i < getNumberOfCPUCores(); i++) {
          String filename =
              "/sys/devices/system/cpu/cpu" + i + "/cpufreq/cpuinfo_max_freq";
          File cpuInfoMaxFreqFile = new File(filename);
          if (cpuInfoMaxFreqFile.exists()) {
            byte[] buffer = new byte[128];
            FileInputStream stream = new FileInputStream(cpuInfoMaxFreqFile);
            try {
              stream.read(buffer);
              int endIndex = 0;
              //Trim the first number out of the byte buffer.
              while (buffer[endIndex] >= '0' && buffer[endIndex] <= '9'
                  && endIndex < buffer.length) endIndex++;
              String str = new String(buffer, 0, endIndex);
              Integer freqBound = Integer.parseInt(str);
              if (freqBound > maxFreq) maxFreq = freqBound;
            } catch (NumberFormatException e) {
              //Fall through and use /proc/cpuinfo.
            } finally {
              stream.close();
            }
          }
        }
        if (maxFreq == DEVICEINFO_UNKNOWN) {
          FileInputStream stream = new FileInputStream("/proc/cpuinfo");
          try {
            int freqBound = parseFileForValue("cpu MHz", stream);
            freqBound *= 1000; //MHz -> kHz
            if (freqBound > maxFreq) maxFreq = freqBound;
          } finally {
            stream.close();
          }
        }
      } catch (IOException e) {
        maxFreq = DEVICEINFO_UNKNOWN; //Fall through and return unknown.
      }
      return maxFreq;
    }
    

    获取内存大小

    如果 SDK 版本大于等于 JELLY_BEAN ,可以通过 ActivityManager 来获取内从大小。

    ActivityManager.MemoryInfo memInfo = new ActivityManager.MemoryInfo();
    ActivityManager am = (ActivityManager) c.getSystemService(Context.ACTIVITY_SERVICE);
    am.getMemoryInfo(memInfo);
    

    如果版本低于 JELLY_BEAN ,则只能读取系统文件了。

    FileInputStream stream = new FileInputStream("/proc/meminfo");
    totalMem = parseFileForValue("MemTotal", stream);
    

    完整代码如下:

    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
    public static long getTotalMemory(Context c) {
      // memInfo.totalMem not supported in pre-Jelly Bean APIs.
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
        ActivityManager.MemoryInfo memInfo = new ActivityManager.MemoryInfo();
        ActivityManager am = (ActivityManager) c.getSystemService(Context.ACTIVITY_SERVICE);
        am.getMemoryInfo(memInfo);
        if (memInfo != null) {
          return memInfo.totalMem;
        } else {
          return DEVICEINFO_UNKNOWN;
        }
      } else {
        long totalMem = DEVICEINFO_UNKNOWN;
        try {
          FileInputStream stream = new FileInputStream("/proc/meminfo");
          try {
            totalMem = parseFileForValue("MemTotal", stream);
            totalMem *= 1024;
          } finally {
            stream.close();
          }
        } catch (IOException e) {
        }
        return totalMem;
      }
    }
    

    猜你喜欢

    展开全文
  • 读取CMOS内存中的时钟

    千次阅读 2011-06-10 16:24:00
    一、CMOS内存信息详解 一般的PC/AT、286、386、486等微机均配有CMOS芯片,CMOS&127;芯片包含了一个实时钟 和64个字节的CMOS内存。在CMOS内存中,0-0DH为实时钟的有关信息,0E-&127;3FH包含 计算机的硬件配置信息,如...

    一、CMOS内存信息详解
    一般的PC/AT、286、386、486等微机均配有CMOS芯片,CMOS&127;芯片包含了一个实时钟
    和64个字节的CMOS内存。在CMOS内存中,0-0DH为实时钟的有关信息,0E-&127;3FH包含
    计算机的硬件配置信息,如常规内存的大小、扩展内存的大小、&127;软盘的类型、固定
    盘的类型及其物理参数、显示器的类型等,这些参数与计算机能否正常工作具有密切的
    关系,另外还有计算机的开机口令和其它辅助设置信息。表1列出了CMOS内存各字
    节的用途。

    偏移量
    (十六进制)
    偏移量
    (十进制)
    字段长度
    (字节)
    功能描述
    00h
    0
    1
    用BCD描述的当前秒(00-59)
    01h
    1
    1
    用BCD描述的报警时钟秒
    02h
    2
    1
    用BCD描述的报警当前分钟(00-59)
    03h
    3
    1
    用BCD描述的报警时钟分钟
    04h
    4
    1
    用BCD描述的报警当前小时(00-23)
    05h
    5
    1
    用BCD描述的报警时钟(以小时为单位)
    06h
    6
    1
    用BCD描述的当前日期(星期几)(00-06)
    07h
    7
    1
    用BCD描述的当前日期(日)(00-31)
    08h
    8
    1
    用BCD描述的当前月(00-12)
    09h
    9
    1
    用BCD描述的当前年(00-99)
    0Ah
    10
    1
    状态注册码A
    0Bh
    11
    1
    状态注册码B
    0Ch
    12
    1
    状态注册码C
    0Dh
    13
    1
    状态注册码D
    0Eh
    14
    1
    诊断状态
    0Fh
    15
    1
    系统关闭代码
    10h
    16
    1
    软盘驱动器类型
    11h
    17
    1
    高级BIOS设置选项
    12h
    18
    1
    硬盘O/I类型(0-15)
    13h
    19
    1
    键盘输人速率与延迟
    14h
    20
    1
    安装设备
    15h
    21
    1
    从低位字节计数的基本内存,以1K计数
    16h
    22
    1
    从高位字节计数的基本内存,以1K计数
    17h
    23
    1
    从低位字节计数的扩展内存,以1K计数
    18h
    24
    1
    从高位字节计数的扩展内存,以1K计数
    19h
    25
    1
    硬盘扩展类型0(0-255)
    1Ah
    26
    1
    硬盘扩展类型1(0-255)
    1Bh
    27
    8
    硬盘0的用户定义类型信息
    24h
    36
    8
    硬盘1的用户定义类型信息
    2Dh
    45
    1
    高级BIOS设置选项
    2Eh
    46
    1
    高位字节CMOS校验和
    2Fh
    47
    1
    低位字节CMOS校验和
    30h
    48
    1
    从低位字节计数的POST报告扩展内存
    31h
    49
    1
    从高位字节计数的POST报告扩展内存
    32h
    50
    1
    BCD码公元数(00-90)
    33h
    51
    1
    通电自检信息标志
    34h
    52
    2
    高级BIOS设置选项
    36h
    54
    1
    指定芯片组的BIOS设置选项
    37h
    55
    7
    加电口令(通常加密)
    3Eh
    62
    1
    从高位字节计数的扩展CMOS校验和
    3Fh
    63
    1
    从低位字节计数的扩展CMOS校验和

     

    二、读写CMOS内存的方法
    CMOS内存的地址口和数据口的口地址分别为70H和71H。在对CMOS内存进行写操作时,首先
    将要写入的CMOS内存的地址送到口地址70H,&127;再将要写入的数据送口地址71H。在对
    CMOS内存进行读操作时,首先将要读出的CMOS内存的地址送到口地址70H,再从口地址71H
    读出数据到AL寄存器。

    三、Linux下的c程序如下

    展开全文
  • 一、时钟初始化 1.概念解析: (1)时钟脉冲信号:由特定的电压幅度以及特定的时间间隔产生的脉冲信号 (2)时钟脉冲频率:单位时间内产生的脉冲个数 (3)信号产生: A.晶体振荡器:石英晶体经过打磨,加电极...

    一、时钟初始化

    1.概念解析:
    (1)时钟脉冲信号:由特定的电压幅度以及特定的时间间隔产生的脉冲信号
    (2)时钟脉冲频率:单位时间内产生的脉冲个数
    (3)信号产生:
    A.晶体振荡器:石英晶体经过打磨,加电极,通电,会产生稳定的时钟脉冲。但是如果需要高频率的信号,虽然结构简单,噪声低,但是成本倍增,交货周期长,而且难 以获得非标准频率。
    B.PLL电路:也需要外部晶振,可改变外部晶体频率。但是占板面积小,可以产生不同频率的时钟信号,可以得到高频信号,成本低

    2.源代码

    二、内存初始化

      1:地址空间:
    (1)地址线:2440对外提供27条地址线,只能访问128MB的外设空间。
    (2)片选信号:8个片选信号,扩大可访问的外设空间到1GB。
    (3)外设空间:有2440的datasheet知道他将1GB分成8部分,即8块,通过不同的片选信号来访问不同的块空间。其中内存从band6开始(0x30000000),有可能占用band7。
    (4)存储器控制器:所谓对内存初始化,实质上是对CPU的存储器控制器进行初始化,由他对给出的地址进行分析转换得到片选信号和行列地址。而CPU和内部寄存器之间的访问则是通过CPU内部的32位总线进行的。
    2:内存芯片连接
    由于每个单元格的容量是16bit,即内存芯片的数据宽度是16bit,而CPU的数据宽度是32bit,为了避免浪费,就用两块内存芯片并联,使得每一次cpu对内存访问的时候可以一次性取出32bit的数据。分为高16bit和低16bit。
    当然不可避免的要涉及到片选信号,L_BANK选择信号,行列地址信号。
    3存储器控制器寄存器
    设置13个寄存器,要查阅2440的datasheet以及内存的datasheet,然后看时序图,找出寄存器的某些位控制的参数所需要设置的值。最后要学会在汇编里用循环的方式来给寄存器赋值。
    5.  理论上2440可以寻址4GB,总体上分为内部空间和外设空间。外设空间又分为8个bank,每个bank为128MB
    、代码搬移

    1、垫脚石空间不够存放完整的uboot,所以要利用前面能够存放在垫脚石里的代码将剩余uboot复制到内存;

    2、起始地址:(在本课由于未初始化NAND,所以起始地址在垫脚石)垫脚石的起始地址。终点:链接器脚本里指定的起始链接地址

    3、搬移方式,地址每次自动增加4个字节,利用一个中转寄存器。

    4、源代码


    展开全文
  • 【STM32】系统时钟RCC详解(超详细,超全面)

    万次阅读 多人点赞 2019-08-08 15:42:35
    1什么是时钟 时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的指令。时钟系统就是CPU的脉搏,决定cpu速率,像人的心跳一样 只有有了心跳,人才能做其他的事情,而单片机有了时钟,才能够运行执行...
  • ITRON的内存管理,中断处理,时钟管理

    千次阅读 2012-02-09 10:09:03
    内存管理 任务在运行过程中对内存的需求是不断变化的不同的任务有不同的需要,OS 将内存当作一种资源来看并且在竞争的任务之间分配,这种资源就如同在竞争的任务间分配CPU 控制权一样。  概述 在ITRON系统中所指...
  • stm32可选的时钟源 在STM32中,可以用内部时钟,也可以用外部时钟,在要求进度高的应用场合最好用外部晶体震荡器,内部时钟存在一定的精度误差。 准确的来说有4个时钟源可以选分别是HSI、LSI、HSE、LSE(即内部...
  • 系统时钟:是一个存储于系统内存中的逻辑时钟。用于系统的计算,比如超时产生的中断异常,超时计算就是由系统时钟计算的。这种时钟在系统掉电或重新启动时每次会被清除。  CPU时钟:即CPU的频率,当然这里的时钟...
  • 【汇编】TSR内存驻留程序实现与删除及热键设置——以实现时钟为例 最近完成了一个关于时钟中断驻留的汇编大作业,对于TSR很是感兴趣,查阅了不少资料,发现现在很少相关的内容资料。尤其是TSR删除这一块几乎找不到在...
  • 内存本身没有时钟发生器,内存时钟信号由主板上的时钟信号器提供。 内存核心频率是内存的真实运行频率,内存Cell阵列(内存电容)的刷新频率。 内存频率虽然在成倍增长,但实际上内存颗粒的频率一直在133MHz~200...
  • clock时钟

    千次阅读 2019-03-05 10:54:54
    2, hclk: AHB总线上适用(High), 如usb,内存,相机等. 3, pclk: APB总线使用(peripheral), 入i2s,i2c,spi 等. 如何得到不同频率的时钟. 1, osc:表示晶振(2440上是16M). 2, pll表示锁相环(Phase-Locked-Lo...
  • 时钟算法

    千次阅读 2017-07-31 08:51:38
    时钟算法计算机内存中,缓存是一种稀缺资源,虽然运行速度非常快,但是一个合理的算法能更好的提升性能.例如一个循环,在csapp一书中提到,是否合理的使用缓存的区域性.能影响两倍的性能.今天重点在页面置换的时钟算法不...
  • 本文就PCIe Receiver内部恢复时钟与本地时钟之前的关系根据弹性缓冲的相关资料做一个浅显的学习整理,如有读者发现问题或错误,请慷慨指出,后期也会持续修正优化,谢谢! 对于PCIe总线的数据传输,我们知道其相...
  • 复位与时钟控制器(Reset Clock Controller)缩写 转自:http://hi.baidu.com/acmbuguake/item/28561e0342303fc31ef04677
  • 时钟管理

    千次阅读 2014-04-14 15:08:38
    18. 时钟管理 18.1. 基本概念 驱动数字电路运转是的时钟信号,它就像人的心脏一样,只有时钟的跳动,时序电路才会被驱动,完成计时,同步,计数等,而这些基本的电路跳变动作又被进一步组成更为复杂的...
  • 时钟信号

    千次阅读 2011-08-26 15:48:46
    时钟信号 (Clock):时钟信号是提供给同步内存做讯号同步之用,同步记忆体的存取动作必需与时钟信号同步。  主板晶振14.318KHZ http://www.go-gddq.com/html/s128/2010-11/513327.htm 时钟供电电路组成 ...
  • 时钟系统

    2012-09-27 10:33:08
    时钟系统   S3C2440时钟系统介绍 1、 一般来说,MCU的主时钟源主要是外部晶振或外部时钟,而用的最多的是外部晶振。在正确情况下,系统内所使用的时钟都是外部时钟源经过一定的处理得到的。由于外部时钟源的...
  • 系统时钟

    千次阅读 2014-04-08 20:25:16
    FCLK is used内核时钟,主频。 HCLK is used for AHB bus, which is used by the ARM920T, the memory controller, the interrupt controller, the LCD controller, the DMA and USB host block. 也就是总线...
  • 以MT48LCxx型号的DDR内存芯片为例,数据手册中给出如图1所示的一个表格。从表格中可以看出它的主频(Clock Frequency)。 图1 不同速度等级的DDR主频 它的主频与传输数据的频率相同。我们可以从时序图中观察出来...
  • 单片机时钟的解析

    2018-11-17 12:02:34
     时钟周期也称为振荡周期,定义为时钟脉冲的倒数(时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时钟周期就是1/12us),是计算机中的最基本的、最小的时间单位。  在一个时钟周期内,CPU仅完成一个最...
  • 时钟频率

    千次阅读 2013-03-03 21:28:19
    时钟频率,是提供电脑定时信号的一个源,这个源产生不同频率的基准信号,用来同步CPU的每一步操作,通常简称其为频率。CPU的主频,是其核心内部的工作频率(核心时钟频率),它是评定CPU性能的重要指标。 ...
  • 机器周期:完成一个基本操作(取指令、存储器读、存储器写[指令流水线的每个单元])所需要的时间,通常用内存中读取一个指令字的最短时间来定义。指令周期:取出并执行一条指令的时间。总线周期:通常把CPU通过总线...
  • linux时钟浅析

    千次阅读 2013-05-12 00:28:54
    时钟的作用 尽管与CPU指令执行没有什么直接关系,时钟对于操作系统来说还是有着很重要的意义:  1、记录系统时间。很多应用程序需要知道日期和时间、由日期和时间构成的时间戳也会被打在文件上面、等等;  2、...
  • 时钟分频原理 - 时钟分频原理详解

    千次阅读 多人点赞 2018-11-08 19:52:21
    时钟分频原理  如果cpu是计算机的大脑,电流是计算机的血液,那么时钟则是计算机的心脏,时钟频率决定了处理器运算的快慢,它的每一次“跳动”都驱动着处理器不停的执行命令。不同的是,人的各个部位心率是一样的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 115,871
精华内容 46,348
关键字:

内存时钟