3.5. Вътрешна памет на две нива на TMS320C6211
DSP TMS320C6211 разполага с архитектура на паметта с две нива за вътрешните магистрали за програми и данни. Паметта от първо ниво за вътрешните магистрали за програми и данни е 4 Kbytes кеш, организиран в L1P за програмен кеш и в L1D за кеш за данни. Второто ниво памет е един блок
от 64 Kbytes, който се поделя между магистралите за програмната памет и паметта за данни и е оформен като L2.
Фиг. 3-9 илюстрира как са разположени L1P, L1D и L2 в TMS320C6211. Фиг. 3-10 илюстрира магистралните връзки между CPU, вътрешните памети и EDMA.
Фиг.3-9. Блокова схема на TMS320C6211
Табл.3-6. Конфигурации на вътрешната памет при TMS320C6211
|
|
|
|
|
|
(байта) |
‘C6211 | 6200 | Harvard (L1)
Унифицирана (L2) |
|
|
|
|
Табл.3-7. Архитектури на кеш при TMS320C6211
|
|
|
|
’C6211 L1P |
|
|
|
’C6211 L1D |
|
|
|
’C6211 L2 |
|
|
|
Фиг.3-10. Блокова схема на вътрешната памет на TMS320C6211
L1P е организиран като direct mapped кеш с 64 линии с 64 байта (два зареждаеми пакета) размер на линия. Изискваният размер на данните от L1P е една линия, като най-младшите шест бита от изисквания адрес се игнорират. Следващите шест бита от адреса се използват за адресиране на линия в кеша. Оставащите битове се използват като уникален етикет за изискваните данни. Фиг. 3-11 показва как един 32-битов адрес се разпределя, за да осигури адрес в кеша и етикет на данните за L1P.
Фиг.3-11. Адрес за L1P
31 12 11 6 5 0
|
|
|
Кешът изпраща данни към CPU за времето на един цикъл. За разлика от TMS320C6201, L1P работи само като кеш и не може да бъде разположен в картата на паметта. L1P неподдържа режими на забранен кеш и на заобикаляне на еша. Всяко първоначално обръщение към програмната памет води до ненамиране в кеша. Данните се изискват от L2 и се разполагат във вътрешния кеш. Всяко следващо четене от кеширан адрес предизвиква откриване в кеша и данните се зареждат от паметта
L1P.
L1D е организиран като 2-областен кеш с 64 линии по 32 байта. Двата най-младши бита от един заявен адрес се игнорират от L1D, т. к. най-малкият елемент, до който се осъществява достъп е една дума. Следващият бит от адреса се използва за адресиране на правилната дума. Битове 4 и 3 избират един от четирите 8-байтови подлинии в адресираната линия. Следващите шест бита избират линия в кеша, в който адресираните данни попадат. Останалите битове от адреса се използват като уникален етикет на изискваните данни. Фиг. 3-12 илюстрира как един 32-битов адрес се разпределя, за да осигури избор на дума, подлиния, линия и етикет за L1D.
Фиг. 3-12. Адрес за L1D
31 11 10 5 4 3 2 1 0
|
|
|
|
|
При намиране в кеша данните се изпращат към CPU за един цикъл. Работата при ненамиране в кеша зависи от адреса на достъп. При ненамиране при четене L1D изпраща заявка за четене към L2. Когато се получат данните от L2, L1D анализира линията, в която адресираните данни попадат. Контролерът на L1D поставя новите данни в линията, която е използвана най-отдавна. Ако данните в тази линия са модифицирани, но данните на истинския физически адрес не са, тези данни се записват в L2. По този начин кешираните данни, които са били променени, няма да се загубят преди актуализирането си на оригиналния адрес. Ако в един и същ цикъл възникнат две ненамирания при
четене, те се обработват последователно от L1D, така че заявките към L2 се подават една след друга. При ненамиране при запис L1D изпраща заявка за запис към L2. Данните не се разполагат
в L1D.
Заявките за запис от L1D към L2 се буферират. Ако заявка за запис все още не е обработена, когато възникне ненамиране при четене, се позволява буферът да се изпразни преди заявката за четене да се изпрати към L2.
L1D работи като кеш и не може да бъде разположен в картата на паметта. L1D не поддържа режими на спрян кеш и на заобикаляне на кеша. Всяко първоначално четене от адрес води до ненамиране на данни в кеша. Данните се прочитат и зареждат във вътрешната кеш памет. Всяко следващо четене от кеширан адрес предизвиква намиране в кеша и данните се зареждат от вътрешната кеш памет.
L2 е достъпен от L1P и L1D. При ненамиране на търсените данни в кеша L1P или L1D, заявката се изпраща към L2, за да бъде обслужена. Как L2 обслужва заявката зависи от избрания режим на работа на L2. Табл. 3-8 показва поддържаните режими на работа на L2. Тяхното установяване
става чрез запис в полето L2MODE в регистъра за конфигуриране на кеша (CCFG). Фиг. 3-13 показва
форматът на регистъра CCFG . Табл. 3-8 съдържа описание на полетата на този регистър.
Фиг.3-13. Полета в регистъра за конфигурация на кеша
Табл.3-8 Описание на полетата на регистър CCDG
|
|
L2MODE | Режим на работа на L2
L2MODE = 000b: 64 Kbytes SRAM L2MODE = 001b: 16 Kbytes 1-областен кеш / 48 Kbytes адресируем RAM L2MODE = 010b: 32 Kbytes 2-областен кеш / 32 Kbytes адресируем RAM L2MODE = 011b: 48 Kbytes 3-областен кеш / 16 Kbytes адресируем RAM L2MODE = 111b: 64 Kbytes 4-областен кеш L2MODE = други: запазен |
ID | Изчистване на L1D
ID = 0: Нормална работа на L1D ID = 1: Изчиства всички линии на L1D |
IP | Изчистване на LIP
IP = 0: Нормална работа на L1P IP = 1: Изчиства всички линии на L1P |
P | Приоритет на източника на заявка към L2
P = 0: CPU има по-висок приоритет от EDMA P = 1: EDMA има по-висок приоритет от CPU |
При reset полето L2MODE има стойност 000b, така че L2 RAM се конфигурира като 64 Kbytes адресируема памет с цел поддръжка на зареждане на програма. Всеки L2 RAM, който е конфигуриран като кеш вече не е адресируем (не е в картата на паметта). Контролерът на L2 обслужва заявки от три различни източника - L1P, L1D и EDMA. L1P изпраща заявки за четене, а 256-битова магистрала пренася данни от L2 към L1P. Интерфейсът от L1D към L2 се състои от една 128-битова магистрала
за четене от L2 към L1D и една 128-битова магистрала за запис от L1D към L2. L2 прехвърля данни към и от EDMA през една 64-битова магистрала за четене и една 64-битова магистрала за запис.