使CPU运行的更快--Cache

来源:互联网 发布:戴维南定理实验数据 编辑:程序博客网 时间:2024/06/04 17:46

使CPU运行的更快--Cache

高速缓冲存储器Cache是位于CPU与内存之间的临时的存储器,它的容量比内存小但是交换速度快。


在Cache中的数据是内存中的一小部分,但是这一小部分是CPU可以高速的访问的。


1、源代码

/* 2. 设置时钟 */ldr r0, =0x4c000014//mov r1, #0x03;  // FCLK:HCLK:PCLK=1:2:4, HDIVN=1,PDIVN=1mov r1, #0x05;  // FCLK:HCLK:PCLK=1:4:8str r1, [r0]/* 如果HDIVN非0,CPU的总线模式应该从“fast bus mode”变为“asynchronous bus mode” */mrcp15, 0, r1, c1, c0, 0/* 读出控制寄存器 */ orrr1, r1, #0xc0000000/* 设置为“asynchronous bus mode” */mcrp15, 0, r1, c1, c0, 0/* 写入控制寄存器 *//* MPLLCON = S3C2440_MPLL_200MHZ */ldr r0, =0x4c000004ldr r1, =S3C2440_MPLL_400MHZstr r1, [r0]/* 启动ICACHE 会将原来的效率从7秒变为2秒 */mrc p15, 0, r0, c1, c0, 0@ read control regorr r0, r0, #(1<<12)mcrp15, 0, r0, c1, c0, 0   @ write it back/* 3. 初始化SDRAM */ldr r0, =MEM_CTL_BASEadr r1, sdram_config     /* sdram_config的当前地址 */add r3, r0, #(13*4)1:ldr r2, [r1], #4str r2, [r0], #4cmp r0, r3bne 1b/* 4. 重定位 : 把bootloader本身的代码从flash复制到它的链接地址去 */ldr sp, =0x34000000bl nand_initmov r0, #0ldr r1, =_startldr r2, =__bss_startsub r2, r2, r1bl copy_code_to_sdrambl clear_bss/* 5. 执行main */ldr lr, =haltldr pc, =mainhalt:b haltsdram_config:.long 0x22011110 //BWSCON.long 0x00000700 //BANKCON0.long 0x00000700 //BANKCON1.long 0x00000700 //BANKCON2.long 0x00000700 //BANKCON3  .long 0x00000700 //BANKCON4.long 0x00000700 //BANKCON5.long 0x00018005 //BANKCON6.long 0x00018005 //BANKCON7.long 0x008C04F4 // REFRESH.long 0x000000B1 //BANKSIZE.long 0x00000030 //MRSRB6.long 0x00000030 //MRSRB7

很多时候你不去使用ICACHE的话,那么CPU就会不断的从你的外部的SDRAM里面种读取数据

但是外部的SDRAM的速度明显要慢很多,所以CPU就老是等待,还不如用一块小的高速内存将外部的SDRAM的

启动代码放进去,这样的效率才会更高。




原创粉丝点击