本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別涉及一種反饋數(shù)據(jù)的方法、緩存器、控制器及系統(tǒng)。
背景技術(shù):
片上系統(tǒng)指的是在單個芯片上集成一個完整的系統(tǒng),完整的系統(tǒng)一般包括:處理器、存儲器、以及外圍電路等。一般,片上系統(tǒng)的軟件代碼等會存儲在外部存儲器上。如圖1所示,片上系統(tǒng)的結(jié)構(gòu)示意圖,從圖1上可知,片上系統(tǒng)包括:Bus Bridge(總線橋)、CPU(Central Processing Unit,中央處理器)、Memory Controller(存儲控制器)、ROM(Read Only Memory,只讀存儲器)、Data RAM(RAM,Random Access Memory,隨機存取存儲器;數(shù)據(jù)隨機存取存儲器)、Code RAM(代碼隨機存取存儲器)、SPI Controller(Serial Peripheral Interface,串行外設(shè)接口;串行外設(shè)接口控制器)、AHB(Advanced High performance Bus,系統(tǒng)總線)、AHB Device 0(第0號系統(tǒng)總線設(shè)備)、AHB Device 1、AHB Device 2、APB(Advanced Peripheral Bus,外圍總線)、APB Device 0(第0號外圍總線設(shè)備)、APB Device 1、APB Device 2、APB Device 3和DMA Controller(Direct Memory Access,直接內(nèi)存存??;直接內(nèi)存存取控制器)。
目前,片上系統(tǒng)當(dāng)需要從一個運行場景切換到另一運行場景時,需要將新運行場景的代碼從外部存儲器加載到片內(nèi)的Code RAM中,然后運行該新運行場景的代碼,因此,片上系統(tǒng)中需要設(shè)計大量的Code RAM,用于存儲需要運行的新運行場景的代碼,以便于運行時從Code RAM中動態(tài)加載代碼。
綜上所述,目前的片上系統(tǒng)設(shè)計中需要設(shè)計大量的Code RAM,用于存儲不同運行場景駐留內(nèi)存的代碼,使片上系統(tǒng)的整芯片面積增大,降低了片上系 統(tǒng)的集成度。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供一種反饋數(shù)據(jù)的方法、緩存器、控制器及系統(tǒng),用以解決現(xiàn)有技術(shù)中存在的片上系統(tǒng)設(shè)計中需要設(shè)計大量的Code RAM,用于存儲不同運行場景駐留內(nèi)存的代碼,使片上系統(tǒng)的整芯片面積增大,降低了片上系統(tǒng)的集成度的問題。
本發(fā)明實施例一種反饋數(shù)據(jù)的方法,包括:
緩存器在接收到處理器通過控制器發(fā)送的第一讀命令后,判斷地址映射關(guān)系中是否存在所述第一讀命令對應(yīng)的第一數(shù)據(jù)地址;
所述緩存器在確定所述地址映射關(guān)系中存在所述第一讀命令對應(yīng)的第一數(shù)據(jù)地址后,根據(jù)所述地址映射關(guān)系,確定所述第一數(shù)據(jù)地址對應(yīng)的第二數(shù)據(jù)地址;
所述緩存器在確定所述第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)在緩存器中時,將所述數(shù)據(jù)作為所述處理器需要獲取的數(shù)據(jù),反饋給所述處理器。
由于本發(fā)明實施例緩存器根據(jù)接收到的處理器通過控制器發(fā)送的第一讀命令和地址映射關(guān)系在確定地址映射關(guān)系中存在第一讀命令對應(yīng)的第一數(shù)據(jù)地址后,確定第一數(shù)據(jù)地址對應(yīng)的第二數(shù)據(jù)地址,并在確定緩存器中存儲有第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)時,將該數(shù)據(jù)反饋給處理器,片上系統(tǒng)只需要設(shè)計一個存儲容量較小的緩存器,不需要設(shè)計大量的Code RAM,便能實現(xiàn)對不同運行場景的運行,提高了片上系統(tǒng)的集成度。
較佳地,所述緩存器在接收到處理器通過控制器發(fā)送的第一讀命令之前,還包括:
所述緩存器根據(jù)接收到的第一數(shù)據(jù)地址和第二數(shù)據(jù)地址,建立所述地址映射關(guān)系。
較佳地,所述緩存器判斷地址映射關(guān)系中是否存在所述第一讀命令對應(yīng)的 第一數(shù)據(jù)地址之后,還包括:
所述緩存器在確定所述地址映射關(guān)系中不存在所述第一讀命令對應(yīng)的第一數(shù)據(jù)地址后,根據(jù)所述第一讀命令的類型,對所述第一讀命令進行處理。
較佳地,所述緩存器根據(jù)所述第一讀命令的類型,對所述第一讀命令進行處理,包括:
所述第一讀命令為讀指令命令,所述緩存器通知所述處理器進行異常處理;所述處理器在接收到進行異常處理的通知后,根據(jù)獲得的所述第一讀命令對應(yīng)的第一數(shù)據(jù)地址和所述第一數(shù)據(jù)地址對應(yīng)的第二數(shù)據(jù)地址,更新所述地址映射關(guān)系;所述處理器通過所述控制器向所述緩存器發(fā)送所述第一數(shù)據(jù)地址對應(yīng)的第一讀命令;或
所述第一讀命令為讀數(shù)據(jù)命令,所述緩存器記錄所述第一讀命令對應(yīng)的第一數(shù)據(jù)地址和下一個所述第一讀命令為讀指令命令時對應(yīng)的第一數(shù)據(jù)地址。
由于本發(fā)明實施例緩存器通知處理器進行異常處理后,處理器根據(jù)獲得的第一讀命令對應(yīng)的第一數(shù)據(jù)地址確定對應(yīng)的第二數(shù)據(jù)地址,更新地址映射關(guān)系,并通過控制器向緩存器發(fā)送第一數(shù)據(jù)地址對應(yīng)的第一讀命令,進而使得緩存器能在地址映射關(guān)系查找到該第一數(shù)據(jù)地址對應(yīng)的第二數(shù)據(jù)地址;由于本發(fā)明實施例緩存器記錄第一讀命令對應(yīng)的第一數(shù)據(jù)地址和下一個第一讀命令為讀指令命令時對應(yīng)的第一數(shù)據(jù)地址,以便于根據(jù)記錄的兩個第一數(shù)據(jù)地址進行后期的調(diào)試定位。
較佳地,所述緩存器確定所述第一數(shù)據(jù)地址對應(yīng)的第二數(shù)據(jù)地址之后,還包括:
所述緩存器在確定所述第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)未在緩存器中時,向所述外部存儲器發(fā)送第二讀命令;
所述緩存器將所述外部存儲器反饋的所述第二讀命令對應(yīng)的數(shù)據(jù)中的所述第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)作為所述處理器需要獲取的數(shù)據(jù),反饋給所述處理器;
所述緩存器將所述外部存儲器反饋的所述第二讀命令對應(yīng)的數(shù)據(jù)存儲到所述緩存器中。
由于本發(fā)明實施例緩存器向外部存儲器發(fā)送第二讀命令,獲取到外部存儲器反饋的包含第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)的數(shù)據(jù),并將第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)反饋給處理器,以使處理器根據(jù)該數(shù)據(jù)繼續(xù)執(zhí)行相應(yīng)操作;由于本發(fā)明實施例緩存器將外部存儲器反饋的第二讀命令對應(yīng)的數(shù)據(jù)存儲到緩存器中,以便于處理器下次獲取到該數(shù)據(jù)。
本發(fā)明實施例提供一種反饋數(shù)據(jù)的緩存器,包括:
第一判斷模塊,用于在接收到處理器通過控制器發(fā)送的第一讀命令后,判斷地址映射關(guān)系中是否存在所述第一讀命令對應(yīng)的第一數(shù)據(jù)地址;
第一確定模塊,用于在確定所述地址映射關(guān)系中存在所述第一讀命令對應(yīng)的第一數(shù)據(jù)地址后,根據(jù)所述地址映射關(guān)系,確定所述第一數(shù)據(jù)地址對應(yīng)的第二數(shù)據(jù)地址;
第一反饋模塊,用于在確定所述第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)在緩存器中時,將所述數(shù)據(jù)作為所述處理器需要獲取的數(shù)據(jù),反饋給所述處理器。
較佳地,所述第一判斷模塊還用于:
根據(jù)接收到的第一數(shù)據(jù)地址和第二數(shù)據(jù)地址,建立所述地址映射關(guān)系。
較佳地,所述第一判斷模塊還用于:
在確定所述地址映射關(guān)系中不存在所述第一讀命令對應(yīng)的第一數(shù)據(jù)地址后,根據(jù)所述第一讀命令的類型,對所述第一讀命令進行處理。
較佳地,所述第一判斷模塊具體用于:
所述第一讀命令為讀指令命令,通知所述處理器進行異常處理;以使所述處理器在接收到進行異常處理的通知后,根據(jù)獲得的所述第一讀命令對應(yīng)的第一數(shù)據(jù)地址和所述第一數(shù)據(jù)地址對應(yīng)的第二數(shù)據(jù)地址,更新所述地址映射關(guān)系,通過所述控制器向所述緩存器發(fā)送所述第一數(shù)據(jù)地址對應(yīng)的第一讀命令;或所述第一讀命令為讀數(shù)據(jù)命令,記錄所述第一讀命令對應(yīng)的第一數(shù)據(jù)地址和 下一個所述第一讀命令為讀指令命令時對應(yīng)的第一數(shù)據(jù)地址。
較佳地,所述第一反饋模塊還用于:
在確定所述第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)未在緩存器中時,向所述外部存儲器發(fā)送第二讀命令;將所述外部存儲器反饋的所述第二讀命令對應(yīng)的數(shù)據(jù)中的所述第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù),反饋給所述處理器;將所述外部存儲器反饋的所述第二讀命令對應(yīng)的數(shù)據(jù)存儲到所述緩存器中。
本發(fā)明實施例提供一種反饋數(shù)據(jù)的系統(tǒng),包括,
第一緩存器,用于在接收到第一控制器發(fā)送的第一讀命令后,判斷地址映射關(guān)系中是否存在所述第一讀命令對應(yīng)的第一數(shù)據(jù)地址;在確定所述地址映射關(guān)系中存在所述第一讀命令對應(yīng)的第一數(shù)據(jù)地址后,根據(jù)所述地址映射關(guān)系,確定所述第一數(shù)據(jù)地址對應(yīng)的第二數(shù)據(jù)地址;在確定所述第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)在緩存器中時,將所述數(shù)據(jù)作為所述處理器需要獲取的數(shù)據(jù),反饋給所述處理器;
第一控制器,用于將接收到的來自所述第一處理器的所述第一讀命令,發(fā)送給所述第一緩存器;
第一處理器,用于向所述第一控制器發(fā)送所述第一讀命令。
本發(fā)明實施例提供一種反饋數(shù)據(jù)的方法,包括:
控制器在接收到處理器發(fā)送的第三讀命令后,判斷地址映射關(guān)系中是否存在所述第三讀命令對應(yīng)的第三數(shù)據(jù)地址;
所述控制器在確定所述地址映射關(guān)系中存在所述第三讀命令對應(yīng)的第三數(shù)據(jù)地址后,根據(jù)所述地址映射關(guān)系,確定所述第三數(shù)據(jù)地址對應(yīng)的第四數(shù)據(jù)地址;
所述控制器將確定的所述第四數(shù)據(jù)地址發(fā)送給緩存器。
由于本發(fā)明實施例控制器根據(jù)接收到的處理器發(fā)送的第三讀命令和地址映射關(guān)系在確定地址映射關(guān)系中存在第三讀命令對應(yīng)的第三數(shù)據(jù)地址后,確定第三數(shù)據(jù)地址對應(yīng)的第四數(shù)據(jù)地址,并將確定的第四數(shù)據(jù)地址發(fā)送給緩存器, 以便緩存器根據(jù)第四數(shù)據(jù)地址確定第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)是否在緩存器中。
較佳地,所述控制器在接收到處理器發(fā)送的第三讀命令之前,還包括:
所述控制器根據(jù)接收到的第三數(shù)據(jù)地址和第四數(shù)據(jù)地址,建立所述地址映射關(guān)系。
較佳地,所述控制器判斷地址映射關(guān)系中是否存在所述第三讀命令對應(yīng)的第三數(shù)據(jù)地址之后,還包括:
所述控制器在確定所述地址映射關(guān)系中不存在所述第三讀命令對應(yīng)的第三數(shù)據(jù)地址后,根據(jù)所述第三讀命令的類型,對所述第三讀命令進行處理。
較佳地,所述控制器根據(jù)所述第三讀命令的類型,對所述第三讀命令進行處理,包括:
所述第三讀命令為讀指令命令,所述控制器通知所述處理器進行異常處理;所述處理器在接收到進行異常處理的通知后,根據(jù)獲得的所述第三讀命令對應(yīng)的第三數(shù)據(jù)地址和所述第三數(shù)據(jù)地址對應(yīng)的第四數(shù)據(jù)地址,更新所述地址映射關(guān)系;所述處理器向所述控制器發(fā)送所述第三數(shù)據(jù)地址對應(yīng)的第三讀命令;或
所述第三讀命令為讀數(shù)據(jù)命令,所述控制器記錄所述第三讀命令對應(yīng)的第三數(shù)據(jù)地址和下一個所述第三讀命令為讀指令命令時對應(yīng)的第三數(shù)據(jù)地址。
由于本發(fā)明實施例控制器通知處理器進行異常處理后,處理器根據(jù)獲得的第三讀命令對應(yīng)的第三數(shù)據(jù)地址確定對應(yīng)的第四數(shù)據(jù)地址,更新地址映射關(guān)系,并向控制器發(fā)送第三數(shù)據(jù)地址對應(yīng)的第三讀命令,進而使得控制器能在地址映射關(guān)系查找到該第三數(shù)據(jù)地址對應(yīng)的第四數(shù)據(jù)地址;由于本發(fā)明實施例控制器記錄第三讀命令對應(yīng)的第三數(shù)據(jù)地址和下一個第三讀命令為讀指令命令時對應(yīng)的第三數(shù)據(jù)地址,以便于根據(jù)記錄的兩個第三數(shù)據(jù)地址進行后期的調(diào)試定位。
本發(fā)明實施例提供一種反饋數(shù)據(jù)的方法,包括:
緩存器接收控制器發(fā)送的第四數(shù)據(jù)地址;
所述緩存器在確定所述第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)在緩存器中時,將所述數(shù)據(jù)作為處理器需要獲取的數(shù)據(jù),反饋給所述處理器。
由于本發(fā)明實施例緩存器根據(jù)接收到的控制器發(fā)送的第四數(shù)據(jù)地址,確定該緩存器中存儲有第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)時,將該數(shù)據(jù)反饋給處理器,片上系統(tǒng)只需要設(shè)計一個存儲容量較小的緩存器,不需要設(shè)計大量的Code RAM,便能實現(xiàn)對不同運行場景的運行,提高了片上系統(tǒng)的集成度。
較佳地,所述緩存器接收控制器發(fā)送的第四數(shù)據(jù)地址之后,還包括:
所述緩存器在確定所述第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)未在緩存器中時,向外部存儲器發(fā)送第四讀命令;
所述緩存器將所述外部存儲器反饋的所述第四讀命令對應(yīng)的數(shù)據(jù)中的所述第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù),反饋給所述處理器;
所述緩存器將所述外部存儲器反饋的所述第四讀命令對應(yīng)的數(shù)據(jù)存儲到所述緩存器中。
由于本發(fā)明實施例緩存器向外部存儲器發(fā)送第四讀命令,獲取到外部存儲器反饋的包含第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)的數(shù)據(jù),并將第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)反饋給處理器,以使處理器根據(jù)該數(shù)據(jù)繼續(xù)執(zhí)行相應(yīng)操作;由于本發(fā)明實施例緩存器將外部存儲器反饋的第四讀命令對應(yīng)的數(shù)據(jù)存儲到緩存器中,以便于處理器下次獲取到該數(shù)據(jù)。
本發(fā)明實施例提供一種反饋數(shù)據(jù)的控制器,包括:
第二判斷模塊,用于在接收到處理器發(fā)送的第三讀命令后,判斷地址映射關(guān)系中是否存在所述第三讀命令對應(yīng)的第三數(shù)據(jù)地址;
第二確定模塊,用于在確定所述地址映射關(guān)系中存在所述第三讀命令對應(yīng)的第三數(shù)據(jù)地址后,根據(jù)所述地址映射關(guān)系,確定所述第三數(shù)據(jù)地址對應(yīng)的第四數(shù)據(jù)地址;
發(fā)送模塊,用于將確定的所述第四數(shù)據(jù)地址發(fā)送給緩存器。
較佳地,所述第二判斷模塊還用于:
根據(jù)接收到的第三數(shù)據(jù)地址和第四數(shù)據(jù)地址,建立所述地址映射關(guān)系。
較佳地,所述第二判斷模塊還用于:
在確定所述地址映射關(guān)系中不存在所述第三讀命令對應(yīng)的第三數(shù)據(jù)地址后,根據(jù)所述第三讀命令的類型,對所述第三讀命令進行處理。
較佳地,所述第二判斷模塊還用于:
所述第三讀命令為讀指令命令,通知所述處理器進行異常處理;以使所述處理器在接收到進行異常處理的通知后,根據(jù)獲得的所述第三讀命令對應(yīng)的第三數(shù)據(jù)地址和所述第三數(shù)據(jù)地址對應(yīng)的第四數(shù)據(jù)地址,更新所述地址映射關(guān)系,向所述控制器發(fā)送所述第三數(shù)據(jù)地址對應(yīng)的第三讀命令;或所述第三讀命令為讀數(shù)據(jù)命令,記錄所述第三讀命令對應(yīng)的第三數(shù)據(jù)地址和下一個所述第三讀命令為讀指令命令時對應(yīng)的第三數(shù)據(jù)地址。
本發(fā)明實施例提供一種反饋數(shù)據(jù)的緩存器,包括:
接收模塊,用于接收控制器發(fā)送的第四數(shù)據(jù)地址;
第二反饋模塊,用于在確定所述第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)在緩存器中時,將所述數(shù)據(jù)作為處理器需要獲取的數(shù)據(jù),反饋給所述處理器。
較佳地,所述第二反饋模塊還用于:
在確定所述第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)未在緩存器中時,向外部存儲器發(fā)送第四讀命令;將所述外部存儲器反饋的所述第四讀命令對應(yīng)的數(shù)據(jù)中的所述第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù),反饋給所述處理器;將所述外部存儲器反饋的所述第四讀命令對應(yīng)的數(shù)據(jù)存儲到所述緩存器中。
本發(fā)明實施例提供一種反饋數(shù)據(jù)的系統(tǒng),包括:
第二緩存器,用于接收控制器發(fā)送的第四數(shù)據(jù)地址;在確定所述第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)在緩存器中時,將所述數(shù)據(jù)作為處理器需要獲取的數(shù)據(jù),反饋給所述處理器;
第二控制器,用于在接收到處理器發(fā)送的第三讀命令后,判斷地址映射關(guān)系中是否存在所述第三讀命令對應(yīng)的第三數(shù)據(jù)地址;在確定所述地址映射關(guān)系 中存在所述第三讀命令對應(yīng)的第三數(shù)據(jù)地址后,根據(jù)所述地址映射關(guān)系,確定所述第三數(shù)據(jù)地址對應(yīng)的第四數(shù)據(jù)地址;將確定的所述第四數(shù)據(jù)地址發(fā)送給緩存器;
第二處理器,用于向控制器發(fā)送第三讀命令;接收所述緩存器反饋的數(shù)據(jù)。
附圖說明
圖1為背景技術(shù)中的片上系統(tǒng)的結(jié)構(gòu)示意圖;
圖2a為本發(fā)明實施例提供的一種反饋數(shù)據(jù)的方法的流程示意圖;
圖2b為本發(fā)明實施例提供的第一數(shù)據(jù)地址與第二數(shù)據(jù)地址的地址映射關(guān)系示意圖;
圖2c為本發(fā)明實施例提供的又一第一數(shù)據(jù)地址與第二數(shù)據(jù)地址的地址映射關(guān)系示意圖;
圖3為本發(fā)明實施例提供的片上系統(tǒng)的結(jié)構(gòu)示意圖;
圖4為本發(fā)明實施例提供的另一種反饋數(shù)據(jù)的方法的流程示意圖;
圖5為本發(fā)明實施例提供的一種反饋數(shù)據(jù)的緩存器的結(jié)構(gòu)示意圖;
圖6為為本發(fā)明實施例提供的一種反饋數(shù)據(jù)的系統(tǒng)的結(jié)構(gòu)示意圖;
圖7為本發(fā)明實施例提供的另一種反饋數(shù)據(jù)的方法的流程示意圖;
圖8為本發(fā)明實施例提供的另一種反饋數(shù)據(jù)的方法的流程示意圖;
圖9為本發(fā)明實施例提供的另一種反饋數(shù)據(jù)的方法的流程示意圖;
圖10為本發(fā)明實施例提供的一種反饋數(shù)據(jù)的控制器的結(jié)構(gòu)示意圖;
圖11為本發(fā)明實施例提供的另一種反饋數(shù)據(jù)的緩存器的結(jié)構(gòu)示意圖;
圖12為本發(fā)明實施例提供的另一種反饋數(shù)據(jù)的系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施方式
本發(fā)明實施例緩存器在接收到處理器通過控制器發(fā)送的第一讀命令后,判斷地址映射關(guān)系中是否存在所述第一讀命令對應(yīng)的第一數(shù)據(jù)地址;所述緩存器 在確定所述地址映射關(guān)系中存在所述第一讀命令對應(yīng)的第一數(shù)據(jù)地址后,根據(jù)所述地址映射關(guān)系,確定所述第一數(shù)據(jù)地址對應(yīng)的第二數(shù)據(jù)地址;所述緩存器在確定所述第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)在緩存器中時,將所述數(shù)據(jù)作為所述處理器需要獲取的數(shù)據(jù),反饋給所述處理器。由于本發(fā)明實施例緩存器根據(jù)接收到的處理器通過控制器發(fā)送的第一讀命令和地址映射關(guān)系在確定地址映射關(guān)系中存在第一讀命令對應(yīng)的第一數(shù)據(jù)地址后,確定第一數(shù)據(jù)地址對應(yīng)的第二數(shù)據(jù)地址,并在確定緩存器中存儲有第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)時,將該數(shù)據(jù)反饋給處理器,片上系統(tǒng)只需要設(shè)計一個存儲容量較小的緩存器,不需要設(shè)計大量的Code RAM,便能實現(xiàn)對不同運行場景的運行,提高了片上系統(tǒng)的集成度。
下面結(jié)合說明書附圖對本發(fā)明實施例作進一步詳細描述。
如圖2a所示,本發(fā)明實施例提供的一種反饋數(shù)據(jù)的方法包括:
步驟200、緩存器在接收到處理器通過控制器發(fā)送的第一讀命令后,判斷地址映射關(guān)系中是否存在所述第一讀命令對應(yīng)的第一數(shù)據(jù)地址;
步驟201、所述緩存器在確定所述地址映射關(guān)系中存在所述第一讀命令對應(yīng)的第一數(shù)據(jù)地址后,根據(jù)所述地址映射關(guān)系,確定所述第一數(shù)據(jù)地址對應(yīng)的第二數(shù)據(jù)地址;
步驟202、所述緩存器在確定所述第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)在緩存器中時,將所述數(shù)據(jù)作為所述處理器需要獲取的數(shù)據(jù),反饋給所述處理器。
本發(fā)明實施例將部分的外部存儲器上的數(shù)據(jù)存儲到緩存器上,以便于處理器獲取到緩存器上的數(shù)據(jù)。
本發(fā)明實施例緩存器可以通過下述方法建立地址映射關(guān)系:
可選地,所述緩存器在接收到處理器通過控制器發(fā)送的第一讀命令之前,還包括:
所述緩存器根據(jù)接收到的第一數(shù)據(jù)地址和第二數(shù)據(jù)地址,建立所述地址映射關(guān)系。
本發(fā)明實施例第一數(shù)據(jù)地址所屬的地址空間可以為一個較大的處理器請 求的虛擬地址空間,第二數(shù)據(jù)地址可以為外部存儲器的物理地址空間,第一數(shù)據(jù)地址與第二數(shù)據(jù)地址的地址映射關(guān)系可以參見圖2b。
如圖2b所示,本發(fā)明實施例提供的第一數(shù)據(jù)地址與第二數(shù)據(jù)地址的地址映射關(guān)系示意圖。從圖2b中可知,第一數(shù)據(jù)地址的頁面大小為1M Bytes,第一數(shù)據(jù)地址所屬的地址空間的大小為4G Bytes,第二數(shù)據(jù)地址所屬的地址空間的大小為5M Bytes;第1個1M Bytes的第一數(shù)據(jù)地址映射到第2個1M Bytes的第二數(shù)據(jù)地址,第2個1M Bytes的第一數(shù)據(jù)地址映射到第1個1M Bytes的第二數(shù)據(jù)地址,第3個1M Bytes的第一數(shù)據(jù)地址映射到第5個1M Bytes的第二數(shù)據(jù)地址,第1537個1M Bytes的第一數(shù)據(jù)地址映射到第3個1M Bytes的第二數(shù)據(jù)地址,第1538個1M Bytes的第一數(shù)據(jù)地址映射到第4個1M Bytes的第二數(shù)據(jù)地址。
在圖2b中,若第1個1M Bytes的第二數(shù)據(jù)地址中,只存儲了0.5M Bytes的數(shù)據(jù),為了更加合理的利用外部存儲空間,后續(xù)的數(shù)據(jù)可以從第1個1M Bytes的第二數(shù)據(jù)地址中的未存儲數(shù)據(jù)的空間開始存儲,在改變了數(shù)據(jù)的存儲位置以后,第一數(shù)據(jù)地址與第二數(shù)據(jù)地址的地址映射關(guān)系也會改變,具體的可以參見圖2c。
如圖2c所示,本發(fā)明實施例提供的又一第一數(shù)據(jù)地址與第二數(shù)據(jù)地址的地址映射關(guān)系示意圖。從圖2c中可知,第一數(shù)據(jù)地址的頁面大小為1M Bytes,第一數(shù)據(jù)地址所屬的地址空間的大小為4G Bytes,第二數(shù)據(jù)地址所屬的地址空間的大小為5M Bytes;第1個1M Bytes的第一數(shù)據(jù)地址映射到部分的第1個1M Bytes的第二數(shù)據(jù)地址和部分的第2個1M Bytes的第二數(shù)據(jù)地址,第2個1M Bytes的第一數(shù)據(jù)地址映射到部分的第1個1M Bytes的第二數(shù)據(jù)地址,第3個1M Bytes的第一數(shù)據(jù)地址映射到部分的第4個1M Bytes的第二數(shù)據(jù)地址和部分的第5個1M Bytes的第二數(shù)據(jù)地址,第1537個1M Bytes的第一數(shù)據(jù)地址映射到部分的第2個1M Bytes的第二數(shù)據(jù)地址和部分的第3個1M Bytes的第二數(shù)據(jù)地址,第1538個1M Bytes的第一數(shù)據(jù)地址映射到部分的第3個1M Bytes的第二數(shù)據(jù)地址和部分的第4個1M Bytes的第二數(shù)據(jù)地址。
本發(fā)明實施例地址映射關(guān)系中有可能存在第一讀命令對應(yīng)的第一數(shù)據(jù)地址,也有可能不存在第一讀命令對應(yīng)的第一數(shù)據(jù)地址,當(dāng)不存在第一讀命令對應(yīng)的第一數(shù)據(jù)地址時,會進行相應(yīng)的處理,具體的實現(xiàn)方式為:
可選地,所述緩存器判斷地址映射關(guān)系中是否存在所述第一讀命令對應(yīng)的第一數(shù)據(jù)地址之后,還包括:
所述緩存器在確定所述地址映射關(guān)系中不存在所述第一讀命令對應(yīng)的第一數(shù)據(jù)地址后,根據(jù)所述第一讀命令的類型,對所述第一讀命令進行處理。
本發(fā)明實施例會根據(jù)第一讀命令的類型進行相應(yīng)的處理,具體的處理方式為:
方式一:
所述第一讀命令為讀指令命令,所述緩存器通知所述處理器進行異常處理;
所述處理器在接收到進行異常處理的通知后,根據(jù)獲得的所述第一讀命令對應(yīng)的第一數(shù)據(jù)地址和所述第一數(shù)據(jù)地址對應(yīng)的第二數(shù)據(jù)地址,更新所述地址映射關(guān)系;
所述處理器通過所述控制器向所述緩存器發(fā)送所述第一數(shù)據(jù)地址對應(yīng)的第一讀命令。
本發(fā)明實施例當(dāng)?shù)刂酚成潢P(guān)系中不存在第一讀命令對應(yīng)的第一數(shù)據(jù)地址,且第一讀命令為讀指令命令時,緩存器會通知處理器進行異常處理,具體的通知方式為:緩存器向處理器發(fā)送異常指令,處理器根據(jù)該異常指令進行相應(yīng)的異常處理;處理器在接收到異常指令后,會將當(dāng)前的第一讀命令對應(yīng)的第一數(shù)據(jù)地址存儲到特定寄存器中,并且在進行異常處理過程中,會根據(jù)存儲在特定寄存器中的第一數(shù)據(jù)地址,從內(nèi)存中的完整的地址映射關(guān)系表中查找該第一數(shù)據(jù)地址和該第一數(shù)據(jù)地址對應(yīng)的第二數(shù)據(jù)地址,然后更新地址映射關(guān)系,進而使得更新后的地址映射關(guān)系中存在該第一數(shù)據(jù)地址,最后處理器通過控制器向 緩存器發(fā)送該第一數(shù)據(jù)地址對應(yīng)的第一讀命令,此時緩存器能在地址映射關(guān)系查找到該第一數(shù)據(jù)地址對應(yīng)的第二數(shù)據(jù)地址。
本發(fā)明實施例處理器在對地址映射關(guān)系進行更新操作時,可以替換原有的映射關(guān)系,也可以新增映射關(guān)系。
方式二:
所述第一讀命令為讀數(shù)據(jù)命令,所述緩存器記錄所述第一讀命令對應(yīng)的第一數(shù)據(jù)地址和下一個所述第一讀命令為讀指令命令時對應(yīng)的第一數(shù)據(jù)地址。
本發(fā)明實施例當(dāng)?shù)刂酚成潢P(guān)系中不存在第一讀命令對應(yīng)的第一數(shù)據(jù)地址,且第一讀命令為讀數(shù)據(jù)命令時,緩存器會記錄該第一數(shù)據(jù)地址和下一個第一讀命令為讀指令命令時對應(yīng)的第一數(shù)據(jù)地址,以便于根據(jù)記錄的兩個不同時刻的兩個第一讀命令一一對應(yīng)的第一數(shù)據(jù)地址進行后期的調(diào)試定位。
本發(fā)明實施例第二地址對應(yīng)的數(shù)據(jù)可能存儲在緩存器中,也可能未存儲在緩存器中,當(dāng)?shù)诙刂穼?yīng)的數(shù)據(jù)未存儲在緩存器中時,緩存器會進行下述處理:
可選地,所述緩存器確定所述第一數(shù)據(jù)地址對應(yīng)的第二數(shù)據(jù)地址之后,還包括:
所述緩存器在確定所述第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)未在緩存器中時,向所述外部存儲器發(fā)送第二讀命令;
所述緩存器將所述外部存儲器反饋的所述第二讀命令對應(yīng)的數(shù)據(jù)中的所述第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)作為所述處理器需要獲取的數(shù)據(jù),反饋給所述處理器。
本發(fā)明實施例緩存器在接收到外部存儲器反饋的第二讀命令對應(yīng)的數(shù)據(jù)后,可以僅將第二讀命令對應(yīng)的數(shù)據(jù)中的第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)反饋給處理器即可,也可以既將第二讀命令對應(yīng)的數(shù)據(jù)中的第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)反饋給處理器,又將第二讀命令對應(yīng)的數(shù)據(jù)存儲起來,具體的實現(xiàn)方式為:
可選地,所述緩存器將所述外部存儲器反饋的所述第二讀命令對應(yīng)的數(shù)據(jù) 中的所述第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)作為所述處理器需要獲取的數(shù)據(jù),反饋給所述處理器之后,還包括:
所述緩存器將所述外部存儲器反饋的所述第二讀命令對應(yīng)的數(shù)據(jù)存儲到所述緩存器中。
本發(fā)明實施例緩存器可以在將第二讀命令對應(yīng)的數(shù)據(jù)中的第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)反饋給處理器的同時,將第二讀命令對應(yīng)的數(shù)據(jù)存儲到緩存器中;也可以在將第二讀命令對應(yīng)的數(shù)據(jù)中的第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)反饋給處理器后,將第二讀命令對應(yīng)的數(shù)據(jù)存儲到緩存器中。
本發(fā)明實施例將第二讀命令對應(yīng)的數(shù)據(jù)存儲到緩存器中后,以便于處理器獲取該數(shù)據(jù)。
如圖3所示,本發(fā)明實施例提供的片上系統(tǒng)的結(jié)構(gòu)示意圖,從圖3中可知,片上系統(tǒng)包括:Bus Bridge、CPU、Memory Controller、ROM、Data RAM、SPI Cache(Serial Peripheral Interface,串行外設(shè)接口;串行外設(shè)接口高速緩沖存儲器)、SPI Controller、AHB、AHB Device 0、AHB Device 1、AHB Device 2、APB、APB Device 0、APB Device 1、APB Device 2、APB Device 3和DMA Controller。
在圖3中,CPU在需要獲取數(shù)據(jù)時,通過Memory Controller向SPI Cache發(fā)送讀命令;SPI Cache判斷地址映射關(guān)系中是否存在接收到的讀命令對應(yīng)的第一數(shù)據(jù)地址,當(dāng)存在時,根據(jù)該址映射關(guān)系確定第一數(shù)據(jù)地址對應(yīng)的第二數(shù)據(jù)地址(第二數(shù)據(jù)地址為外部存儲器的物理地址),再去確定SPI Cache中是否存儲有第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù),在確定SPI Cache中存儲有第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)時,將該數(shù)據(jù)反饋給CPU;CPU在接收到數(shù)據(jù)后,根據(jù)該數(shù)據(jù)執(zhí)行相應(yīng)的處理。
如圖4所示,本發(fā)明實施例提供的另一種反饋數(shù)據(jù)的方法包括:
步驟400、處理器通過控制器向緩存器發(fā)送第一讀命令。
步驟401、緩存器判斷地址映射關(guān)系中是否存在接收到的第一讀命令對應(yīng) 的第一數(shù)據(jù)地址,若存在,執(zhí)行步驟402;否則,執(zhí)行步驟406。
在步驟401中,緩存器在接收到處理器通過控制器發(fā)送的第一讀命令之前,根據(jù)接收到的第一數(shù)據(jù)地址和第二數(shù)據(jù)地址,建立地址映射關(guān)系。
步驟402、緩存器根據(jù)地址映射關(guān)系,確定第一數(shù)據(jù)地址對應(yīng)的第二數(shù)據(jù)地址。
步驟403、緩存器判斷緩存器中是否存儲有第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù),若是,則執(zhí)行步驟404;否則,執(zhí)行步驟409。
步驟404、緩存器將第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)反饋給處理器。
步驟405、本流程結(jié)束。
步驟406、緩存器判斷第一讀命令是讀指令命令,還是讀數(shù)據(jù)命令,若是讀指令命令,則執(zhí)行步驟407;若是讀數(shù)據(jù)命令,則執(zhí)行步驟408。
步驟407、緩存器通知處理器進行異常處理,以使處理器在接收到進行異常處理的通知后,根據(jù)獲得的第一讀命令對應(yīng)的第一數(shù)據(jù)地址和第一數(shù)據(jù)地址對應(yīng)的第二數(shù)據(jù)地址,更新地址映射關(guān)系,執(zhí)行步驟400。
步驟408、緩存器記錄第一讀命令對應(yīng)的第一數(shù)據(jù)地址和下一個第一讀命令為讀指令命令時對應(yīng)的第一數(shù)據(jù)地址,執(zhí)行步驟405。
步驟409、緩存器向外部存儲器發(fā)送第二讀命令。
在步驟409中,在如圖3所示的片上系統(tǒng)中,緩存器需要通過SPI Controller向外部存儲器發(fā)送第二讀命令。
步驟410、外部存儲器向緩存器發(fā)送第二讀命令對應(yīng)的數(shù)據(jù)。
步驟411、緩存器將外部存儲器反饋的第二讀命令對應(yīng)的數(shù)據(jù)中的第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)反饋給處理器,執(zhí)行步驟405。
在步驟411中,緩存器可以在將數(shù)據(jù)反饋給處理器后,將第二讀命令對應(yīng)的數(shù)據(jù)存儲到緩存器中;也可以將數(shù)據(jù)反饋給處理器的同時,將第二讀命令對應(yīng)的數(shù)據(jù)存儲到緩存器中。
基于同一發(fā)明構(gòu)思,本發(fā)明實施例中還提供了一種反饋數(shù)據(jù)的緩存器和一 種反饋數(shù)據(jù)的系統(tǒng),由于圖5的反饋數(shù)據(jù)的緩存器對應(yīng)的方法為本發(fā)明實施例一種反饋數(shù)據(jù)的方法,由于圖6的反饋數(shù)據(jù)的系統(tǒng)對應(yīng)的方法為本發(fā)明實施例一種反饋數(shù)據(jù)的方法,因此本發(fā)明實施例緩存器和系統(tǒng)的實施可以參見方法的實施,重復(fù)之處不再贅述。
如圖5所示,本發(fā)明實施例提供的一種反饋數(shù)據(jù)的緩存器包括:
第一判斷模塊500,用于在接收到處理器通過控制器發(fā)送的第一讀命令后,判斷地址映射關(guān)系中是否存在所述第一讀命令對應(yīng)的第一數(shù)據(jù)地址;
第一確定模塊501,用于在確定所述地址映射關(guān)系中存在所述第一讀命令對應(yīng)的第一數(shù)據(jù)地址后,根據(jù)所述地址映射關(guān)系,確定所述第一數(shù)據(jù)地址對應(yīng)的第二數(shù)據(jù)地址;
第一反饋模塊502,用于在確定所述第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)在緩存器中時,將所述數(shù)據(jù)作為所述處理器需要獲取的數(shù)據(jù),反饋給所述處理器。
較佳地,所述第一判斷模塊500還用于:
根據(jù)接收到的第一數(shù)據(jù)地址和第二數(shù)據(jù)地址,建立所述地址映射關(guān)系。
較佳地,所述第一判斷模塊500還用于:
在確定所述地址映射關(guān)系中不存在所述第一讀命令對應(yīng)的第一數(shù)據(jù)地址后,根據(jù)所述第一讀命令的類型,對所述第一讀命令進行處理。
較佳地,所述第一判斷模塊500具體用于:
所述第一讀命令為讀指令命令,通知所述處理器進行異常處理;以使所述處理器在接收到進行異常處理的通知后,根據(jù)獲得的所述第一讀命令對應(yīng)的第一數(shù)據(jù)地址和所述第一數(shù)據(jù)地址對應(yīng)的第二數(shù)據(jù)地址,更新所述地址映射關(guān)系,通過所述控制器向所述緩存器發(fā)送所述第一數(shù)據(jù)地址對應(yīng)的第一讀命令;或所述第一讀命令為讀數(shù)據(jù)命令,記錄所述第一讀命令對應(yīng)的第一數(shù)據(jù)地址和下一個所述第一讀命令為讀指令命令時對應(yīng)的第一數(shù)據(jù)地址。
較佳地,所述第一反饋模塊502還用于:
在確定所述第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)未在緩存器中時,向所述外部存儲器 發(fā)送第二讀命令;將所述外部存儲器反饋的所述第二讀命令對應(yīng)的數(shù)據(jù)中的所述第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù),反饋給所述處理器;將所述外部存儲器反饋的所述第二讀命令對應(yīng)的數(shù)據(jù)存儲到所述緩存器中。
如圖6所示,本發(fā)明實施例提供的一種反饋數(shù)據(jù)的系統(tǒng)包括:
第一緩存器600,用于在接收到第一控制器發(fā)送的第一讀命令后,判斷地址映射關(guān)系中是否存在所述第一讀命令對應(yīng)的第一數(shù)據(jù)地址;在確定所述地址映射關(guān)系中存在所述第一讀命令對應(yīng)的第一數(shù)據(jù)地址后,根據(jù)所述地址映射關(guān)系,確定所述第一數(shù)據(jù)地址對應(yīng)的第二數(shù)據(jù)地址;在確定所述第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)在緩存器中時,將所述數(shù)據(jù)作為所述處理器需要獲取的數(shù)據(jù),反饋給所述處理器;
第一控制器601,用于將接收到的來自所述第一處理器的所述第一讀命令,發(fā)送給所述第一緩存器;
第一處理器602,用于向所述第一控制器發(fā)送所述第一讀命令。
綜上所述,由于本發(fā)明實施例緩存器根據(jù)接收到的處理器通過控制器發(fā)送的第一讀命令和地址映射關(guān)系在確定地址映射關(guān)系中存在第一讀命令對應(yīng)的第一數(shù)據(jù)地址后,確定第一數(shù)據(jù)地址對應(yīng)的第二數(shù)據(jù)地址,并在確定緩存器中存儲有第二數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)時,將該數(shù)據(jù)反饋給處理器,片上系統(tǒng)只需要設(shè)計一個存儲容量較小的緩存器,不需要設(shè)計大量的Code RAM,便能實現(xiàn)對不同運行場景的運行,提高了片上系統(tǒng)的集成度。
如圖7所示,本發(fā)明實施例提供的另一種反饋數(shù)據(jù)的方法包括:
步驟700、控制器在接收到處理器發(fā)送的第三讀命令后,判斷地址映射關(guān)系中是否存在所述第三讀命令對應(yīng)的第三數(shù)據(jù)地址;
步驟701、所述控制器在確定所述地址映射關(guān)系中存在所述第三讀命令對應(yīng)的第三數(shù)據(jù)地址后,根據(jù)所述地址映射關(guān)系,確定所述第三數(shù)據(jù)地址對應(yīng)的第四數(shù)據(jù)地址;
步驟702、所述控制器將確定的所述第四數(shù)據(jù)地址發(fā)送給緩存器。
本發(fā)明實施例控制器可以通過下述方法建立地址映射關(guān)系:
可選地,所述控制器在接收到處理器發(fā)送的第三讀命令之前,還包括:
所述控制器根據(jù)接收到的第三數(shù)據(jù)地址和第四數(shù)據(jù)地址,建立所述地址映射關(guān)系。
本發(fā)明實施例第三數(shù)據(jù)地址所屬的地址空間可以為一個較大的處理器請求的虛擬地址空間,第四數(shù)據(jù)地址可以為外部存儲器的物理地址空間,第三數(shù)據(jù)地址與第四數(shù)據(jù)地址的地址映射關(guān)系可以參見圖2b,此時第三數(shù)據(jù)地址相當(dāng)于圖2b中的第一數(shù)據(jù)地址,第四數(shù)據(jù)地址相當(dāng)于圖2b中的第二數(shù)據(jù)地址。
本發(fā)明實施例地址映射關(guān)系中有可能存在第三讀命令對應(yīng)的第三數(shù)據(jù)地址,也有可能不存在第三讀命令對應(yīng)的第三數(shù)據(jù)地址,當(dāng)不存在第三讀命令對應(yīng)的第三數(shù)據(jù)地址時,會進行相應(yīng)的處理,具體的實現(xiàn)方式為:
可選地,所述控制器判斷地址映射關(guān)系中是否存在所述第三讀命令對應(yīng)的第三數(shù)據(jù)地址之后,還包括:
所述控制器在確定所述地址映射關(guān)系中不存在所述第三讀命令對應(yīng)的第三數(shù)據(jù)地址后,根據(jù)所述第三讀命令的類型,對所述第三讀命令進行處理。
本發(fā)明實施例會根據(jù)第三讀命令的類型進行相應(yīng)的處理,具體的處理方式為:
方式一:
所述第三讀命令為讀指令命令,所述控制器通知所述處理器進行異常處理;
所述處理器在接收到進行異常處理的通知后,根據(jù)獲得的所述第三讀命令對應(yīng)的第三數(shù)據(jù)地址和所述第三數(shù)據(jù)地址對應(yīng)的第四數(shù)據(jù)地址,更新所述地址映射關(guān)系;
所述處理器向所述控制器發(fā)送所述第三數(shù)據(jù)地址對應(yīng)的第三讀命令。
本發(fā)明實施例當(dāng)?shù)刂酚成潢P(guān)系中不存在第三讀命令對應(yīng)的第三數(shù)據(jù)地址,且第三讀命令為讀指令命令時,控制器會通知處理器進行異常處理,具體的通 知方式為:控制器向處理器發(fā)送異常指令,以使處理器根據(jù)該異常指令進行相應(yīng)的異常處理;處理器在接收到異常指令后,會將當(dāng)前的第三讀命令對應(yīng)的第三數(shù)據(jù)地址存儲到特定寄存器中,并且在進行異常處理過程中,會根據(jù)存儲在特定寄存器中的第三數(shù)據(jù)地址,從內(nèi)存中的完整的地址映射關(guān)系表中查找該第三數(shù)據(jù)地址和該第三數(shù)據(jù)地址對應(yīng)的第四數(shù)據(jù)地址,然后更新地址映射關(guān)系,進而使得更新后的地址映射關(guān)系中存在該第三數(shù)據(jù)地址,最后處理器向控制器發(fā)送該第三數(shù)據(jù)地址對應(yīng)的第三讀命令,此時控制器能在地址映射關(guān)系查找到該第三數(shù)據(jù)地址對應(yīng)的第四數(shù)據(jù)地址。
本發(fā)明實施例處理器在對地址映射關(guān)系進行更新操作時,可以替換原有的映射關(guān)系,也可以新增映射關(guān)系。
方式二:
所述第三讀命令為讀數(shù)據(jù)命令,所述控制器記錄所述第三讀命令對應(yīng)的第三數(shù)據(jù)地址和下一個所述第三讀命令為讀指令命令時對應(yīng)的第三數(shù)據(jù)地址。
本發(fā)明實施例當(dāng)?shù)刂酚成潢P(guān)系中不存在第三讀命令對應(yīng)的第三數(shù)據(jù)地址,且第三讀命令為讀數(shù)據(jù)命令時,控制器會記錄該第三數(shù)據(jù)地址和下一個第三讀命令為讀指令命令時對應(yīng)的第三數(shù)據(jù)地址,以便于根據(jù)記錄的兩個不同時刻的兩個第三讀命令一一對應(yīng)的第三數(shù)據(jù)地址進行后期的調(diào)試定位。
如圖8所示,本發(fā)明實施例提供的另一種反饋數(shù)據(jù)的方法包括:
步驟800、緩存器接收控制器發(fā)送的第四數(shù)據(jù)地址;
步驟801、所述緩存器在確定所述第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)在緩存器中時,將所述數(shù)據(jù)作為處理器需要獲取的數(shù)據(jù),反饋給所述處理器。
本發(fā)明實施例第四地址對應(yīng)的數(shù)據(jù)可能存儲在緩存器中,也可能未存儲在緩存器中,當(dāng)?shù)谒牡刂穼?yīng)的數(shù)據(jù)未存儲在緩存器中時,緩存器會進行下述處理:
可選地,所述緩存器接收控制器發(fā)送的第四數(shù)據(jù)地址之后,還包括:
所述緩存器在確定所述第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)未在緩存器中時,向外部 存儲器發(fā)送第四讀命令;
所述緩存器將所述外部存儲器反饋的所述第四讀命令對應(yīng)的數(shù)據(jù)中的所述第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù),反饋給所述處理器。
本發(fā)明實施例緩存器在接收到外部存儲器反饋的第四讀命令對應(yīng)的數(shù)據(jù)后,可以僅將第四讀命令對應(yīng)的數(shù)據(jù)中的第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)反饋給處理器即可,也可以既將第四讀命令對應(yīng)的數(shù)據(jù)中的第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)反饋給處理器,又將第四讀命令對應(yīng)的數(shù)據(jù)存儲起來,具體的實現(xiàn)方式為:
可選地,所述緩存器將所述外部存儲器反饋的所述第四讀命令對應(yīng)的數(shù)據(jù)中的所述第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù),反饋給所述處理器之后,還包括:
所述緩存器將所述外部存儲器反饋的所述第四讀命令對應(yīng)的數(shù)據(jù)存儲到所述緩存器中。
本發(fā)明實施例緩存器可以在將第四讀命令對應(yīng)的數(shù)據(jù)中的第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)反饋給處理器的同時,將第四讀命令對應(yīng)的數(shù)據(jù)存儲到緩存中;也可以在將第四讀命令對應(yīng)的數(shù)據(jù)中的第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)反饋給處理器后,將第四讀命令對應(yīng)的數(shù)據(jù)存儲到緩存中。
在圖3中,CPU在需要獲取數(shù)據(jù)時,向Memory Controller發(fā)送讀命令;Memory Controller判斷地址映射關(guān)系中是否存在接收到的讀命令對應(yīng)的第三數(shù)據(jù)地址,當(dāng)存在時,根據(jù)該址映射關(guān)系確定第三數(shù)據(jù)地址對應(yīng)的第四數(shù)據(jù)地址(第四數(shù)據(jù)地址為外部存儲器的物理地址),再將第四數(shù)據(jù)地址發(fā)送給SPI Cache;SPI Cache根據(jù)接收到的第四數(shù)據(jù)地址確定SPI Cache中是否存儲有第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù),在確定SPI Cache中存儲有第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)時,將該數(shù)據(jù)反饋給CPU;CPU在接收到數(shù)據(jù)后,根據(jù)該數(shù)據(jù)執(zhí)行相應(yīng)的處理。
如圖9所示,本發(fā)明實施例提供的另一種反饋數(shù)據(jù)的方法包括:
步驟900、處理器向控制器發(fā)送第三讀命令。
步驟901、控制器判斷地址映射關(guān)系中是否存在接收到的第三讀命令對應(yīng) 的第三數(shù)據(jù)地址,若存在,執(zhí)行步驟902;否則,執(zhí)行步驟907。
在步驟901中,控制器在接收到處理器發(fā)送的第三讀命令之前,根據(jù)接收到的第三數(shù)據(jù)地址和第四數(shù)據(jù)地址,建立地址映射關(guān)系。
步驟902、控制器根據(jù)地址映射關(guān)系,確定第三數(shù)據(jù)地址對應(yīng)的第四數(shù)據(jù)地址。
步驟903、控制器將確定的第四數(shù)據(jù)地址發(fā)送給緩存器。
步驟904、緩存器根據(jù)第四數(shù)據(jù)地址判斷緩存器中是否存儲有第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù),若是,則執(zhí)行步驟905;否則,執(zhí)行步驟910。
步驟905、緩存器將第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)反饋給處理器。
步驟906、本流程結(jié)束。
步驟907、控制器判斷第三讀命令是讀指令命令,還是讀數(shù)據(jù)命令,若是讀指令命令,則執(zhí)行步驟908;若是讀數(shù)據(jù)命令,則執(zhí)行步驟909。
步驟908、控制器通知處理器進行異常處理,以使處理器在接收到進行異常處理的通知后,根據(jù)獲得的第三讀命令對應(yīng)的第三數(shù)據(jù)地址和第三數(shù)據(jù)地址對應(yīng)的第四數(shù)據(jù)地址,更新地址映射關(guān)系,執(zhí)行步驟900。
步驟909、控制器記錄第三讀命令對應(yīng)的第三數(shù)據(jù)地址和下一個第三讀命令為讀指令命令時對應(yīng)的第三數(shù)據(jù)地址,執(zhí)行步驟906。
步驟910、緩存器向外部存儲器發(fā)送第四讀命令。
在步驟910中,在如圖3所示的片上系統(tǒng)中,緩存器需要通過SPI Controller向外部存儲器發(fā)送第四讀命令。
步驟911、外部存儲器向緩存器發(fā)送第四讀命令對應(yīng)的數(shù)據(jù)。
步驟912、緩存器將外部存儲器反饋的第四讀命令對應(yīng)的數(shù)據(jù)中的第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)反饋給處理器,執(zhí)行步驟906。
在步驟912中,緩存器可以在將數(shù)據(jù)反饋給處理器后,將第四讀命令對應(yīng)的數(shù)據(jù)存儲到緩存器中;也可以將數(shù)據(jù)反饋給處理器的同時,將第四讀命令對應(yīng)的數(shù)據(jù)存儲到緩存器中。
基于同一發(fā)明構(gòu)思,本發(fā)明實施例中還提供了一種反饋數(shù)據(jù)的控制器、一種反饋數(shù)據(jù)的緩存器和一種反饋數(shù)據(jù)的系統(tǒng),由于圖10的反饋數(shù)據(jù)的控制器對應(yīng)的方法為本發(fā)明實施例一種反饋數(shù)據(jù)的方法,由于圖11的反饋數(shù)據(jù)的緩存器對應(yīng)的方法為本發(fā)明實施例一種反饋數(shù)據(jù)的方法,由于圖12的反饋數(shù)據(jù)的系統(tǒng)對應(yīng)的方法為本發(fā)明實施例一種反饋數(shù)據(jù)的方法,因此本發(fā)明實施例控制器、緩存器和系統(tǒng)的實施可以參見方法的實施,重復(fù)之處不再贅述。
如圖10所示,本發(fā)明實施例提供的一種反饋數(shù)據(jù)的控制器包括:
第二判斷模塊1000,用于在接收到處理器發(fā)送的第三讀命令后,判斷地址映射關(guān)系中是否存在所述第三讀命令對應(yīng)的第三數(shù)據(jù)地址;
第二確定模塊1001,用于在確定所述地址映射關(guān)系中存在所述第三讀命令對應(yīng)的第三數(shù)據(jù)地址后,根據(jù)所述地址映射關(guān)系,確定所述第三數(shù)據(jù)地址對應(yīng)的第四數(shù)據(jù)地址;
發(fā)送模塊1002,用于將確定的所述第四數(shù)據(jù)地址發(fā)送給緩存器。
較佳地,所述第二判斷模塊1000還用于:
根據(jù)接收到的第三數(shù)據(jù)地址和第四數(shù)據(jù)地址,建立所述地址映射關(guān)系。
較佳地,所述第二判斷模塊1000還用于:
在確定所述地址映射關(guān)系中不存在所述第三讀命令對應(yīng)的第三數(shù)據(jù)地址后,根據(jù)所述第三讀命令的類型,對所述第三讀命令進行處理。
較佳地,所述第二判斷模塊1000還用于:
所述第三讀命令為讀指令命令,通知所述處理器進行異常處理;以使所述處理器在接收到進行異常處理的通知后,根據(jù)獲得的所述第三讀命令對應(yīng)的第三數(shù)據(jù)地址和所述第三數(shù)據(jù)地址對應(yīng)的第四數(shù)據(jù)地址,更新所述地址映射關(guān)系,向所述控制器發(fā)送所述第三數(shù)據(jù)地址對應(yīng)的第三讀命令;或所述第三讀命令為讀數(shù)據(jù)命令,記錄所述第三讀命令對應(yīng)的第三數(shù)據(jù)地址和下一個所述第三讀命令為讀指令命令時對應(yīng)的第三數(shù)據(jù)地址。
如圖11所示,本發(fā)明實施例提供的另一種反饋數(shù)據(jù)的緩存器包括:
接收模塊1100,用于接收控制器發(fā)送的第四數(shù)據(jù)地址;
第二反饋模塊1101,用于在確定所述第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)在緩存器中時,將所述數(shù)據(jù)作為處理器需要獲取的數(shù)據(jù),反饋給所述處理器。
較佳地,所述第二反饋模塊1101還用于:
在確定所述第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)未在緩存器中時,向外部存儲器發(fā)送第四讀命令;將所述外部存儲器反饋的所述第四讀命令對應(yīng)的數(shù)據(jù)中的所述第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù),反饋給所述處理器;將所述外部存儲器反饋的所述第四讀命令對應(yīng)的數(shù)據(jù)存儲到所述緩存器中。
如圖12所示,本發(fā)明實施例提供的另一種反饋數(shù)據(jù)的系統(tǒng)包括:
第二緩存器1200,用于接收控制器發(fā)送的第四數(shù)據(jù)地址;在確定所述第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)在緩存器中時,將所述數(shù)據(jù)作為處理器需要獲取的數(shù)據(jù),反饋給所述處理器;
第二控制器1201,用于在接收到處理器發(fā)送的第三讀命令后,判斷地址映射關(guān)系中是否存在所述第三讀命令對應(yīng)的第三數(shù)據(jù)地址;在確定所述地址映射關(guān)系中存在所述第三讀命令對應(yīng)的第三數(shù)據(jù)地址后,根據(jù)所述地址映射關(guān)系,確定所述第三數(shù)據(jù)地址對應(yīng)的第四數(shù)據(jù)地址;將確定的所述第四數(shù)據(jù)地址發(fā)送給緩存器;
第二處理器1202,用于向控制器發(fā)送第三讀命令;接收所述緩存器反饋的數(shù)據(jù)。
綜上所述,由于本發(fā)明實施例緩存器根據(jù)接收到的控制器發(fā)送的第四數(shù)據(jù)地址,確定該緩存器中存儲有第四數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)時,將該數(shù)據(jù)反饋給處理器,片上系統(tǒng)只需要設(shè)計一個存儲容量較小的緩存器,不需要設(shè)計大量的Code RAM,便能實現(xiàn)對不同運行場景的運行,提高了片上系統(tǒng)的集成度。
盡管已描述了本發(fā)明的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。