3.4. Разширен преглед на паметта на TMS320C6201/C6701
3.4.1. Контролер на програмната памет
Контролерът на програмната памет има следните функции:
Фиг.3-5 .Разположение на контролера на програмната памет
в блоковата схема на TMS320C6201/C6701
Вътрешната програмна памет се състои от 64 Kbytes RAM, еквивалентен на 2K 256-битови зареждаеми пакета или 16K 32-битови инструкции. Чрез контролера на програмната памет CPU-то има 256-битова връзка с вътрешната памет всеки цикъл.
Режими на работа на вътрешната програмна памет
Вътрешната програмна памет може да се използва в един от четири режима. Те се избират чрез полето за управление на програмния кеш PCC (битове 7-5) от регистъра за управление на CPU и статуса (CSR), както е показано в табл. 3-5.
Режимите са:
Табл.3-5. Режими на работа на вътрешната програмна памет
|
|
|
|
|
Без кеш.(По подразбиране при reset.) |
|
|
Кешът е достъпен и се обновява. |
|
|
Кешът е достъпен, но не се обновява. |
|
|
Кешът не е достъпен и не се обновява. |
DMA контролерът може да чете и записва във вътрешната програмна памет, когато паметта е поставена в адресируем режим. CPU-то винаги има по-висок приоритет от DMA контролера за достъп до вътрешната програмна памет, независимо от стойносттана PRI бита за DMA канала. Достъпът на DMA се отлага, докато CPU спре да прави заявки.
За да се избегне загуба на следващи заявки , които се появяват след арбитража и докато DMA реализира достъп, CPU-то изпълнява един цикъл на изчакване за всеки достъп на DMA.
Максималната скорост на работа на DMA е осъществяване на един достъп на всеки цикъл. В режим
с кеш записът на DMA контролера се игнорира от контролера на програмната памет, а при четене се връща неопределена стойност. За четене и запис от DMA при режим с кеш , контролерът за DMA получава сигнал, че заявката му е приключена.
След reset системната програмна памет е в адресируем режим, което позволява на DMA контролера
да прави първоначално зареждане на код във вътрешната програмнапамет.
Забележка: По време на първоначално зареждане контролерът на програмната памет само ще записва в програмната памет. Ако host-port интерфейсът (HPI) се опитва да чете от адрес в програмната памет по време на стартов процес в режим с host, контролерът на програмната памет ще запише неопределени данни в паметта и ще върне неопределени данни.
Както е показано на фиг.3-6, контролерът на паметта за данни свързва:
CPU и DMA могат да четат и записват 8-битови байтове, 16-битови полудуми и 32-битови думи. Контролерът на паметта за данни извършва арбитриране индивидуално за всяка 16-битова банка. Въпреки, че арбитражът се прави за банки с дължина на думата 16 бита, банките поддържат и
достъп до байт (8 бита). Обаче достъпът до байт не позволява 16-те бита, които го съдържат, да се използват междувременно от друг достъп.
Доколкото множество източници на заявки осъществяват достъп до данни от отделни банки, всички
достъпи се извършват едновременно без проблеми. Освен това, когато се осъществяват два достъпа до различни блокове памет по 32 Kbytes, не възниква конфликт в паметите независимо от адреса. Организацията на паметта позволява и едновременно осъществяване на няколко достъпа в един и същ блок при условие, че се включват различни банки. В един цикъл на CPU без изчакване се извършват два едновременни достъпа до две различни банки памет. Извършването на два едновременни достъпа
до една и съща банка вътрешна памет спира целия CPU конвейер за един такт, осигурявайки два достъпа в два такта. Тези правила се прилагат независимо дали достъпът се реализира с цел четене или запис.
Четения и записи от един и същ изпълним пакет се обработват от контролера на паметта
за данни за един цикъл на CPU. Четения и записи в следващи или предходни цикли на CPU не водят до забавяне на достъпа до вътрешната памет за данни в текущия цикъл. Осъществяването
на достъп до вътрешната памет за данни води до въвеждане на цикли на изчакване само, когато възникне конфликт между инструкции от един и същ зареждаем пакет, осъществяващи достъп до една и съща 16-битова банка. Това състояние се нарича конфликт на вътрешната памет. При него контролерът на паметта за данни спира CPU-то за един цикъл, подрежда последователно заявките за достъп и изпълнява всеки достъп поотделно.
Четене се изпълнява с по-висок приоритет спрямо запис. При паралелно четене и запис четенето е с по-висок приоритет. Ако и четене, и запис искат достъп един и същ ресурс (EMIF, периферна
магистрала, блок вътрешна памет), четенето винаги предхождазаписа. Ако и двата достъпа са с цел запис, осъществяването на достъп от DA1 има предимство пред достъпа от DA2. Ако и двата достъпа са с цел четене, осъществяването на достъп от DA2 има предимство пред този от DA1. Фиг. 3-7 показва какви състояния на достъп водят до конфликти на вътрешната памет, когато CPU осъществява два достъпа до данни (по DA1 и DA2).
Фиг. 3-7.
Достъпи до един и същи блок, предизвикващи конфликт във
вътрешната памет (‘C6201)
Фиг.3-8. Достъпи до един и същи блок, предизвикващи конфликт във
вътрешната памет (‘C6701)