3.2. Вътрешна памет
Обема и разположението на вътрешната памет са различни за различните устройства. Процесорите 'C6201, 'C6202 и 'C6701 имат отделни програмна памет и памет за данни (архитектура Harvard), докато 'C6211 има една част от вътрешната си памет, която може да се използва за програми и за данни. Таблица 3-1 показва конфигурацията на вътрешната памет на устройствата от серията 'C6000. Описанията на различните кеш архитектури са показани в таблица 3-2.
Табл.3-1.Конфигурации на вътрешната памет на TMS320C6000
|
|
|
(байта) |
(байта) |
(байта) |
(байта) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
пространство) 128K(адресно пространство/кеш) |
|
|
|
|
Унифицирана (L2) |
|
|
|
|
Табл.3-2.Кеш архитектури на TMS320C6000
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DSP процесорът TMS320C6201 има 64Kbytes вътрешна програмна памет и 64 Kbytes вътрешна памет за
данни. Програмната памет може да се избира за програмен кеш,който се използва при работа с външна памет. Програмната памет има дължина на думата 256 бита, които представляват един пакет за зареждане. Когато търсените данни не се намират в кеша, се зарежда една дума от външната памет. Вътрешната памет за данни се състои от четири банки с дължина на думата 16 бита. DMA или CPU може да има достъп до всяка банка по веднъж на всеки цикъл, като всички банки са достъпни в цикъла. Т. к. CPU-то има две страни (А и В), то CPU и DMA могат да осъществят достъп до
паметта за данни до три пъти в един цикъл.
3.2.2. TMS320C6201B
DSP процесорът TMS320C6201B има 64Kbytes вътрешна програмна памет и 64 Kbytes вътрешна
памет за данни (като 'C6201). Пространството на програмната памет еидентично и може да се използва като програмен кеш. Дължината на думата на програмната памет е 256 бита , които представляват един пакет за зареждане. Когато търсените данни не се намират в кеша, се зарежда една дума от външната памет.
Вътрешната памет за данни слабо се различава от тази на 'C6201 и е модифицирана с цел да се увеличи достъпа до данните , който може да се реализира всеки цикъл от три източника.
Вместо от четири банки , DSP 'C6201B се състои от осем банки с разредност 16 бита. Те са разделени на два блока от по четири банки - първите четири в долната половина от паметта
за данни и последните четири в горната половина.DMA или CPU имат достъп до всяка банка веднъж на цикъл, като всички банки са достъпни в цикъла. При тази конфигурация на паметта могат да се извършват до три 32-битови достъпа - два от CPU и един от DMA.
Конфигурацията на паметта на DSP TMS320C6701 е почти същата като тази на 'C6201B. Той също
има 64 Kbytes вътрешна програмна памет и 64 Kbytes вътрешна паметза данни, като програмната памет може да се избира и като програмен кеш. Програмната памет има дължината на думата 32 байта, които представляват един пакет за зареждане. Когато търсените данни не се намират в кеша, се зарежда една дума от външна памет.
Вътрешната памет за данни се състои от два блока по
осем 16-битови банки. Тазиособеност позволява едновременно извършване на зареждане с двойна
точност от CPU и достъп до данни за DMA в един цикъл. Тази нова конфигурация на паметта позволявадва 64-битови достъпа на CPU (инструкция LDDW само) и един 32-битов достъп на DMA до
данни в един цикъл.
DSP процесорът TMS320C6202 има 256Kbytes вътрешна програмна памет и 128 Kbytes вътрешна памет за
данни. Програмната памет се състои от две банки по 128 Kbytes, като едната може да се използва
и като програмен кеш. Това осигурява при необходимост 128 Kbytes програмна памет и 128 Kbytes програмен кеш. Дължината на думата на програмната памет е 32 байта, които представляват един пакет за зареждане. Когато търсените данни не се намират в кеша, се зарежда една дума от външна памет.
Вътрешната памет за данни е конфигурирана, както при 'C6201B , в осем 16-битови банки. Те са разделени на два блока от по четири банки - първите четири в долната половина от паметта за данни и последните четири в горната половина. DMA или CPU имат достъп до всяка банка веднъж на цикъл, като всички банки са достъпни в цикъла. При тази конфигурация на паметта могат да се извършват до три 32-битови достъпа до данни в един цикъл.
DSP процесорът TMS320C6211 има 4 Kbytes програмен кеш от ниво 1 (Level-One Program cache (L1P)) и 4 Kbytes кеш за данни от ниво 1 (Level-One Data cache (L1D)). Тези кеш памети са винаги активни и не са включени в картата на паметта. Дължината на думата на L1P е 64 байта (два пакета за зареждане), докато дължината на думата на L1D е 32 байта (осем думи). При ненамиране
на търсената информация в кеша от паметта се зарежда цял пакет, който съдържа
търсената информация. За кеша за инструкции това осигурява предварително
зареден пакет с инструкции, докато зареждането на данни прочита съседни елементи данни. Целият
кеш от ниво 1 е прозрачен за потребителя.
На адрес 0 от вътрешната памет е разположен 64 Kbytes RAM за данни и инструкции. Тази памет може
да се конфигурира в един от пет режима, за да осигури кеш от ниво 2(Level-two cache) (за инструкции и данни), както е показано в таблица 3-3. Паметта SRAM от ниво 2 (L2) винаги започва от адрес 0 независимо от избраниярежим за кеша. Дължината на кеша може да се променя.
Табл.3-3.Режими на работа на L2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
При 'C6201, 'C6202 и 'C6701 контролерът на паметта за данни обслужва всички обръщения
на CPU или DMA към вътрешната памет за данни. DSP 'C6211 има контролер за
кеш за данни от ниво 1 (L1D) и контролер за кеш от ниво 2 (L2). Контролерът наL1D обслужва заявките на процесора и ги изпраща към контролера на L2 при неуспешнотърсене в кеша от ниво 1. Заявките за данни на EDMA отиват директно към контролера на L2.
CPU-то изпраща заявки към контролера на паметта
за данни по две адресни магистрали
(DA1 и DA2). Данните за записване се изпращат по шините за запис наCPU-то (ST1 и ST2). Прочетените данни се получават по шините за зареждане на данни на CPU-то (LD1 и LD2). Заявките на CPU за четене и запис на данни се насочват в зависимост от адреса на заявената
памет към вътрешната памет за данни, към вградената периферия чрез контролера
за периферия или към интерфейса за външна памет.
Контролерът на паметта за данни се свързва с вътрешната памет за данни и извършва арбитриране
на CPU/DMA за достъп до вградения RAM. На фиг. 3-3 са показани CPU-то,контролерът на паметта за данни и шините за връзка с периферията.
Фиг.3-3.Свързване на контролера на паметта за данни при TMS320C6201/C6202/C6701
____ - плътната линия индицира данни
------ - прекъснатата линия индицира заявки
При TMS320C6211 CPU-то изпраща заявки към
контролера на L1D по същия начин,както 'C6201, 'C6202 и 'C6701 изискват данни от контролера на паметта за данни.При ненамиране на данни или при запис контролерът на L1D изпраща заявка към контролера на L2 да изпълни действието. Тогава контролерът на L2 може да осъществи достъп
до кеш L2/памет или да изпрати заявката към EDMA.
Фиг.3-4.Свързване на контролера на паметта за данни при TMS320C6211
Периферията се конфигурира чрез група управляващи регистри, включени в
картата на паметта. Контролерът на периферната магистрала извършва арбитраж на
достъпа до тези управляващи регистри. При 'C6201, 'C6202 и 'C6701 DMA-то има директен достъп до контролера на периферната магистрала, а CPU-то получава достъп до
него чрез контролерана паметта за данни. При 'C6211 контролерът на периферната магистрала
влиза в състава на контролера на L2. Достъпът до него на EDMA е директен, докато CPU-то получавадостъп чрез контролера на L1D.
Контролерът на периферната магистрала преобразува всички обръщения към периферната магистрала в обръщения към дума. Това повлиява на всички записи в управляващия регистър, т. к. байт или полудума ще бъдат третирани като беззнакова 32-битова дума. При четене са достъпни
и индивидуални байтове.
Достъп до байт и полудума при 'C6201/C6701
Контролерът на периферната магистрала преобразува всеки достъп до периферната магистрала
в достъп до дума. Обаче при четене CPU и DMA могат да извлекат подходящичасти от думата, за да извършат коректен достъп до байт и полудума. Страничните ефекти, причинени от четене на регистъра за управление на периферията, възникват независимо от това кои байтове се четат. За запис на байт или полудума CPU и DMA осигуряват коректни стойности само на разрешените байтове.В таблица 3-4 са показани коректните стойности.
Ето защо неопределен резултат ще бъде подаден към неразрешени байтове. Ако потребителя не се грижи за стойностите в неразрешените байтове, това е приемливо. В противен случай трябва
да се осъществи достъп до периферните регистри само чрез достъп до дума.
Табл.3-4. Съдържание на паметта след запис на думи с подреждане Little Endian и Big Endian
|
|
|
Little Endian |
Дума |
|
|
|
Полудума |
|
|
|
Полудума |
|
|
|
Байт |
|
|
|
Байт |
|
|
|
Байт |
|
|
|
Байт |
|
|
|
Забележка: Х - показва коректно записаните полубайтове.
? - показва полубайтовете с недефинирана стойност след запис.
Цикли на изчакване на CPU при 'C6201/C6701
Единичен достъп на CPU до контролера на периферната магистрала предизвиква шест
цикъла на изчакване за CPU. Тези цикли се въвеждат с цел изчакване на периферията и арбитрирането.
Арбитриране на CPU/DMA при 'C6201/C6701
Контролерът на периферната магистрала извършва арбитриране между CPU и DMA за достъп
до периферната магистрала. Както при достъп до вътрешни данни, бит PRI в DMA определя приоритета между CPU и DMA.Ако възникне конфликт CPU (чрез контролера на паметта за данни) и DMA, източникът на заявка с по-нисък приоритет се задържа, докато източникът с по-висок приоритет завърши работата си с контролера на периферната магистрала. При арбитраж периферната магистрала
се разглежда като единичен ресурс. Затова източникът с по-нисък приоритет се блокира по отношение на цялата периферия, а не само по отношение на тази, която се адресира от източника с по-висок приоритет.
Магистралата за разширение на 'C6202 е 32-битова и поддържа синхронен FIFO интерфейс,
асинхронен интерфейс и два host-режима. Двата host-режима са синхронен Master/Slave и асинхронен. Изборът на един от двата се извършва при стартиране чрез резистори, свързани към маса или захранване. Магистралата за разширение замества HPI и увеличава възможностите за работа
с различни памети.
За повече информация виж т. 4. 4.