Данная статья открывает серию публикаций, посвященных многоядерным цифровым сигнальным процессорам TMS320C6678. В статье дается общее представление об архитектуре процессора. Статья отражает лекционно-практический материал, предлагаемый слушателям в рамках курсов повышения квалификации по программе «Многоядерные процессоры цифровой обработки сигналов C66x фирмы Texas Instruments», проводимых в Рязанском государственном радиотехническом университете.

Цифровые сигнальные процессоры TMS320C66xх строятся по архитектуре KeyStone и представляют собой высокопроизводительные многоядерные сигнальные процессоры, работающие как с фиксированной, так и с плавающей точкой. Архитектура KeyStone – это разработанный фирмой Texas Instruments принцип изготовления многоядерных систем на кристалле, позволяющий организовывать эффективную совместную работу большого числа ядер DSP- и RISC-типов, акселераторов и устройств периферии с обеспечением достаточной пропускной способности внутренних и внешних каналов пересылки данных, основой чего являются аппаратные компоненты: Multicore Navigator (контроллер обмена данными по внутренним интерфейсам), TeraNet (внутренняя шина пересылки данных), Multicore Shared Memory Controller (контроллер доступа к общей памяти) и HyperLink (интерфейс с внешними устройствами на внутрикристальной скорости).

Архитектура процессора TMS320C6678 [2], наиболее высокопроизводительного процессора в семействе TMS320C66xх, изображена на Рисунке 1. Архитектура может быть разбита на следующие основные компоненты:

  • набор операционных ядер (CorePack);
  • подсистема работы с общей внутренней и внешней памятью (Memory Subsystem);
  • периферийные устройства;
  • сетевой сопроцессор (Network Coprocessor);
  • контроллер внутренних пересылок (Multicore Navigator);
  • служебные аппаратные модули и внутренняя шина TeraNet.



Рисунок 1. Общая архитектура процессора TMS320C6678

Процессор TMS320C6678 работает на тактовой частоте 1.25 ГГц. В основе функционирования процессора лежит набор операционных ядер С66х CorePack, количество и состав которых зависят от конкретной модели процессора. ЦСП TMS320C6678 включает в свой состав 8 ядер DSP-типа. Ядро является базовым вычислительным элементом и включает в свой состав вычислительные блоки, наборы регистров, программный автомат, память программ и данных. Память, входящая в состав ядра, называется локальной.

Кроме локальной памяти, есть память общая для всех ядер – общая память многоядерного процессора (Multicore Shared Memory – MSM). Доступ к общей памяти осуществляется через подсистему управления памятью (Memory Subsystem), которая также включает интерфейс внешней памяти EMIF для обмена данными между процессором и внешними микросхемами памяти.

Сетевой сопроцессор повышает эффективность работы процессора в составе различного рода телекоммуникационных устройств, реализуя аппаратно типовые для данной сферы задачи обработки данных. В основе работы сопроцессора лежат акселератор пакетной передачи данных (Packet Accelerator) и акселератор защиты информации (Security Accelerator). В спецификации на процессор перечислен набор протоколов и стандартов, поддерживаемых данными акселераторами.

Периферийные устройства включают:

  • Serial RapidIO (SRIO) версии 2.1 – обеспечивает скорость передачи данных до 5 GBaud на линию при числе линий (каналов) – до 4;
  • PCI Express (PCIe) версии Gen2 – обеспечивает скорость передачи данных до 5 GBaud на линию при числе линий (каналов) – до 2;
  • HyperLink – интерфейс внутренней шины, позволяющий коммутировать процессоры, построенные по архитектуре KeyStone, напрямую друг с другом и осуществлять обмен на внутрикристальной скорости; скорость передачи данных – до 50 Gbaud;
  • Gigabit Ethernet (GbE) обеспечивает скорости передачи: 10/100/1000 Mbps и поддерживается аппаратным акселератором сетевых коммуникаций (сетевым сопроцессором);
  • EMIF DDR3 – интерфейс внешней памяти типа DDR3; имеет разрядность шины 64 бита, обеспечивающую адресуемое пространство памяти до 8 Гбайт;
  • EMIF – интерфейс внешней памяти общего назначения; имеет разрядность шины 16 бит и может использоваться для подключения 256MB NAND Flash или 16MB NOR Flash;
  • TSIP (Telecom Serial Ports) – телекоммуникационный последовательный порт; обеспечивает скорости передачи до 8 Mбит/с на одну линию при числе линий – до 8;
  • UART – универсальный асинхронный последовательный порт;
  • I2C – шина внутренней связи;
  • GPIO – ввод-вывод общего назначения – 16 выводов;
  • SPI – универсальный последовательной интерфейс;
  • Таймеры (Timers) – используются для генерации периодических событий.

Служебные аппаратные модули включают в себя:

  • модуль отладки и трассировки (Debug and Trace) – позволяет получать отладочным инструментальным средствам доступ к внутренним ресурсам работающего процессора;
  • загрузочное ПЗУ (boot ROM) – хранит программу начальной загрузки;
  • аппаратный семафор (semaphore) – служит для аппаратной поддержки организации совместного доступа параллельных процессов к общим ресурсам процессора;
  • модуль управления питанием – реализует динамическое управление режимами питания компонентов процессора с целью минимизации энергозатрат в моменты, когда процессор работает не в полную мощь;
  • схема ФАПЧ – формирует внутренние тактовые частоты процессора из внешнего опорного тактирующего сигнала;
  • контроллер прямого доступа в память (EDMA) – управляет процессом пересылки данных, разгружая операционные ядра ЦСП и являясь альтернативой Multicore Navigator.

Контроллер внутренних пересылок (Multicore Navigator) представляет собой мощный и эффективный аппаратный модуль, отвечающий за арбитраж передачи данных между различными компонентами процессора. Многоядерные системы на кристалле TMS320C66xx являются весьма сложными устройствами и, чтобы организовать обмен информацией между всеми компонентами такого устройства, необходим специальный аппаратный блок. Multicore Navigator позволяет ядрам, периферийным устройствам, хост-устройствам не брать на себя функции управления обменом данными. Когда какому-либо компоненту процессора необходимо переслать массив данных на другой компонент, он просто указывает контроллеру, что и куда нужно передать. Все функции по самой пересылке и синхронизации отправителя и получателя берет на себя Multicore Navigator.

Основой функционирования многоядерного процессора TMS320C66xх с позиции высокоскоростного обмена данными между всеми многочисленными компонентами процессора, а также внешними модулями, служит внутренняя шина TeraNet.

В следующей статье будет подробно рассмотрена архитектура операционного ядра C66x.



1. Multicore Programming Guide / SPRAB27B — August 2012;
2. TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor Data Manual / SPRS691C — February 2012.
Поделиться с друзьями
-->

Комментарии (46)


  1. lingvo
    27.06.2017 23:37

    Как по мне, этот процессор, как и вся технология, морально устарел. Также используют его в лучшем случае несколько десятков пользователей в России. Что еще где-то читают по ним курсы?


    1. dernuss
      28.06.2017 09:48

      а какие есть альтернативы?


      1. lingvo
        28.06.2017 10:11

        В случае, если надо высокую производительность в DSP — ПЛИС.
        Если обязательно надо процессор, то Intel Core i7 — он делает этот TI по производительности.
        Если низкое потребление — искать быстрый многоядерный ARM.


        1. dernuss
          28.06.2017 10:15

          ПЛИС — очень дорого и программировать сложнее. Intel Core i7 — потребляет много.
          быстрый ARM чтобы работал в минус 40 ещё найти надо.


          1. lingvo
            28.06.2017 10:27

            Чтобы получить от C6678 нужную производительность на 8 ядер не только в каких нибудь легко распараллеливаемых задачах типа SAR или доплеровский радар, а в более тривиальных, типа задач управления мотором или силовой электроникой, где нужно и фильтр и FFT и Кларк/Парк, а потом запихнуть в логику, нужно очень сильно попотеть. Наши программисты до сих пор борются с оптимальным взаимодействием между ядрами. Так что этот процессор тоже не так легко программировать, как кажется. И не для всех DSP задач он является оптимальным.


            1. telhin
              28.06.2017 14:17

              Делал диплом на C6678, реализация синтеза РЛИ. Программировать и в самом деле сложно. Запуск OpenMP, FFT и TCP происходит без проблем по отдельности, но если надо запустить их совместно, то появляется тонна проблем по совместимости версий пакетов + подсистемы RTOS в качестве прослойки + отсутствие документации. Плюс спец IDE является так же привередливой и забагованной.


              Разработчики поддерживают Keystone2, так что ситуация со временем не улучшается.


              В результате огромный объем времени занимает изучение особенностей одного конкретного ЦСП. Лучше бы я учился прогать под ПЛИС, там хоть знания можно переиспользовать.


              1. dernuss
                28.06.2017 14:26

                Не думаю что под плис программировать проще ;)
                OpenMP вообще вещь сомнительная. Наши программисты её не используют.

                Плюс спец IDE является так же привередливой и забагованной.

                Code composer studio это же любимый программистами eclipse ;)


                1. telhin
                  28.06.2017 14:43

                  Не думаю что под плис программировать проще ;)

                  Один раз разобравшись с современной ПЛИС от Xilinx можно работать на всей линейке ПЛИС Xilinx, конечно переход ISE -> Vivado не самый простой, но все же лучше чем выучить специфику работы на одном конкретном ЦСП, с одной единственной версией RTOS/BIOS и такими же единственными версиями пакетов (половину из которых еще надо правильно скомпилировать).


                  OpenMP вообще вещь сомнительная. Наши программисты её не используют.

                  Как стандарт вещь достаточно хорошая, но реализация от TI просто кошмар (и они вроде как достаточно сильно отстают от последней версии стандарта).


                  1. dernuss
                    28.06.2017 14:51

                    но все же лучше чем выучить специфику работы на одном конкретном ЦСП

                    Всё зависит от зарплаты;)


                1. lingvo
                  28.06.2017 19:00

                  ПЛИС сегодня программировать стало гораздо проще. Для всего низкоуровнево и сложного есть специализированные IP корки, которые нужно просто вставить в проект. Они достаточно хорошо отлажены, протестированы и документированы.
                  А далее все соединять можно посредством SoC, а DSP алгоритмы очень хорошо рисуются, моделируются и отлаживаются с помощью Matlab/DSP System Generator или HDL Coder в графическом виде в виде моделей.
                  То есть VHDL или Verilog знать вообще не надо.


                  Единственный недостаток, собственно, это цена чипов, но на распространенные Kintexы она совсем не кусается.


                  1. dernuss
                    28.06.2017 21:52

                    А можно вообще для плис на СИ писать.
                    Но я знаю довольно много контор и везде разработчики пишут на vhdl/verilog. Включая меня;)


                    1. lingvo
                      29.06.2017 07:54

                      Можно, но ИМХО, это то же самое, что писать на ассемблере для С6678 — времени потратится много, а выхлопа будет мало. Как вы думаете, сколько человеко-месяцев программирования на vhdl/verilog понадобиться на то, чтобы запустить ПЛИСину на плате по ссылке внизу, чтобы она могла полностью загружать/разгружать тамошние DSP данными от каких-нибудь супербыстрых АЦП и ЦАПов по PCIe/SRIO и еще вдобавок делала предварительную фильтрацию и обработку этих данных?


                      1. dernuss
                        29.06.2017 12:41

                        Как вы думаете, сколько человеко-месяцев

                        Мне один месяц. (только PCIe без SRIO, так как бесплатного ядра SRIO нет)


                  1. dernuss
                    28.06.2017 21:56

                    А вообще fpga + DSP проц дополняют друг друга хорошо
                    Как пример -> http://www.insys.ru/fmc/fmc112cp


                    1. lingvo
                      29.06.2017 07:31

                      ПЛИС прекрасно дополняет любую высокопроизводительную микропроцессорную систему.


              1. vsv630
                29.06.2017 14:26

                Эксперты говорят, сравнивать DSP и FPGA не совсем корректно. У них свои ниши. http://www.ti.com/lit/wp/spry296/spry296.pdf. Все упоминаемые решения имеют право на жизнь и в своих задачах будут иметь преимущество. Говорить категорично, что DSP, как технология is dead, не стоит. Разработчику объективно довольно сложно сейчас разобраться, когда что применять. Есть эксперты типа BDTI. А часто и экспертам сложно разобраться с учетом динамики технологий. Но будем стараться…


                1. vsv630
                  29.06.2017 14:42

                  В этой статье речь идет о сравнении FPGA и SoC (не DSP). Действительно, DSP в этом контексте становится не самостоятельным устройством, а только частью более сложной системы. Но это с позиции производителя. С позиции же разработчика возникает вопрос, как вообще работать с такими SoC? То ли несколько программистов должно работать с одним кристаллом (один для ARM, другой для DSP и т.п.) То ли работать надо только с GPP, а за задействование сопроцессоров отвечают инструменты типа OpenCL и OpenMP. Я склоняюсь к первому варианту. Фактически, то что раньше представляло собой модуль или даже набор модулей, которые обслуживали 10 человек теперь умещается в одной микросхеме.


                1. lingvo
                  29.06.2017 15:46

                  Эксперты говорят, сравнивать DSP и FPGA не совсем корректно. У них свои ниши. http://www.ti.com/lit/wp/spry296/spry296.pdf.

                  Трудно согласиться с экспертами, которые априори из конкретного лагеря.
                  Экспертом может быть только тот, кто работал и с теми и другими и знает и преимущества и недостатки каждой из технологий. Например в статье ничего не сказано про ЦОС вообще и о том, какую производительность в ЦОС можно достичь на DSP или ПЛИС. А это ж вроде как основная фича, из-за чего мы применяем данный процессор, правда?


                  1. dernuss
                    29.06.2017 16:07

                    Ещё минус fpga это скорость компиляции проекта,
                    Лично у меня около 35 минут на i7-7700k чип xc6vlx130t-2ff1156.


                  1. serg_p
                    29.06.2017 16:16

                    Вы да, :) и да ни слова


        1. vsv630
          28.06.2017 10:24

          А если все это одновременно?


          1. lingvo
            28.06.2017 10:30

            А если все это одновременно?

            Судя по количеству производителей таких процессоров на рынке — таких задач в мире очень мало. Иначе мы бы видели аналогичный новый процессор и от Analog Devices и от Motorolla/Freescale/NXP. А они наоборот, свои линейки DSP похоронили.


          1. telhin
            28.06.2017 14:26

            ARM + ПЛИС есть на рынке. Intel купил Altera, значит и ПЛИС с x86 архитектурой так же вполне вероятна. Если не ошибаюсь в последние 5 лет проскакивала новость про системы ARM + x86 для устройств с переменной производительностью. Современные плис содержат небольшие блоки DSP для быстрой обработки специфических задач (например обработка видео). ARM + x86 + ПЛИС как мне кажется дает слишком большой оверхед в плане процессорных ядер.


            1. dernuss
              28.06.2017 14:36

              ARM + ПЛИС есть на рынке.

              Слабая производительность у них.


    1. vsv630
      28.06.2017 10:07

      Не совсем понятно, что вы считаете устаревшим. Если говорить о процессоре С6678, то он появился 6 лет назад. Это не очень большой срок для освоения, внедрения и использования новой технологии. На предприятиях успешно используют элементную базу 15 и более летней давности. Несколькими годами позже на базе С6678 появились процессоры KeyStone II, дополнившие C6678 ARM-ядрами. И на сегодняшний день такой тип архитектуры представляется state-of-the-art технологией в области цифровой обработки сигналов. Осенью ждем от TI новой линейки платформы KeyStone. Не думаю, что TI поддерживает и разрабатывает морально устаревшие технологии.

      Если вы имели в виду DSP, как устаревшую технологию, то соглашусь, что сейчас более популярны процессоры общего назначения ARM, Intel и т.п., ПЛИС и графические процессоры. Но мне кажется здесь дело больше в именно популярности, маркетинге, возможно большем удобстве инструментов, простоте программирования, но не в конченых характеристиках производительности и энергоэффективности (конечно, все зависит от задачи). Умножение с накоплением никто не отменял. Просто сменились акценты. Впрочем, DSP всегда был процессором для узкого круга специалистов.

      Курсы по С6678 читаются не "… еще где-то...", а возможно только у нас. Читаются для магистров, а также раз в год в рамках курсов повышения квалификации для представителей предприятий. Число участников — 10-20. Востребованность есть.

      На мой взгляд, сейчас более актуальна задача перехода на отечественные процессоры. Мы работаем в этом направлении, но отталкиваемся от флагманов мировой процессорной индустрии.

      Спасибо за комментарии!


      1. lingvo
        28.06.2017 10:14

        Не совсем понятно, что вы считаете устаревшим.

        Технологию DSP процессоров и конкретно TMS320C6678 без дополнительных ARM ядер и прочих усовершенствований.


        И на сегодняшний день такой тип архитектуры представляется state-of-the-art технологией в области цифровой обработки сигналов.

        Покажите мне, кто еще сегодня выпускает процессоры с такой или похожей архитектурой, пригодный для того, чтобы закладывать его в новые изделия?


        1. vsv630
          28.06.2017 10:22

          ADI, Freescale, ЭЛВИС. Соглашусь, что без ARM процессор выглядит гораздо скромнее, но я бы не проводил грани между KEyStone1 и KeyStone2. Для тех, кто собирается работать с KeyStone2 материалы по Keystone1 будут интересны и полезны. Keystone2 расширяет, но не отменяет Keystone1.


          1. dernuss
            28.06.2017 10:25

            ещё миландр
            http://ic.milandr.ru/products/mikrokontrollery_i_protsessory/32_razryadnye_protsessory_tsos/


  1. ukt
    28.06.2017 09:45

    Хотелось бы увидеть актуальные примеры использования этого процессора.


    1. vsv630
      28.06.2017 10:10

      Если бы не от Тексиса, была бы прекрасная статья: https://pdfs.semanticscholar.org/54ff/2092fcedd4d9b34c03a82208f9cf1d8c4830.pdf


      1. ukt
        28.06.2017 10:46

        Я примерно так и подумал, военщина.


    1. vsv630
      28.06.2017 10:15

      https://asp-eurasipjournals.springeropen.com/articles/10.1186/1687-6180-2014-161


    1. dernuss
      28.06.2017 10:30

      Мы выпускаем такие модули для себя


    1. lingvo
      28.06.2017 10:38

      Вот эти товарищи выпускают VPX модули на C6678
      http://www.setdsp.ru/modules/vpx/svp-407/
      В мире есть еще пара других производителей аналогичных VPX плат.
      VPX используется в оборонных, космических, авиационных и индустриальных системах сбора, обработки информации и управления.


    1. dernuss
      28.06.2017 16:45

      ЗАО «ИнСис ещё применяет TMS320C6678
      http://www.insys.ru/fmc


  1. Ivan_83
    29.06.2017 19:04

    1. Оно уже старое, ему 7+ лет.

    2. Оно, мать его, AMP а не SMP, это значит что там можно запустить одновременно 8 линуксов/бареметалл приложух, но нельзя запустить линукс так чтобы он увидел больше одного ядра.

    3. Тулчейн/сдк под линукс там с кривой системой сборки.
    Оригинал работает на убунту 10, с альт сайта вроде на 12. В апстриме линуха есть какие то крохи от архитектуры, которых явно очень мало.
    После правок у меня заработал на последней убунте (16 лтс на тот момент).
    После ещё правок он наконец то научился использовать для компеляции все ядра проца, и не перекомпиливать весь проект (ядро и всю обвязку), хотя вроде бизибокс всё так же компилял каждый раз.
    Про бареметалл ничего не скажу, вроде как с венды там какой то софт есть и оно как то работает.

    4. Если надо PCI-E в линупсе то нужно брать не родной сдк а с альтернативного сайта, и там включать драйвер PCI-E для кейстонов (как оказалось pci-e там для всех кейстонов один, а не специфичный для 66*, как большая часть его начинки), а заодно не забыть микрики правильно на плате включить.
    Хотя у меня кончилось тем, что я мержил сдк от энтузиастов в родной, тк родной был менее допилен в части дров но зато образ бутился, а от энтузиастов почему то нет.

    5. Код дров выглядел мягко говоря сыроватым.
    FDT естественно никакого не было и нет.
    Из двух эзернетов работал только один, судя по коду в дровах. Джамбафреймы не работали, из за дров как минимум.
    Всё очень уныло на фоне вылизанной х86, и даже арм/мипс. Даже по меркам 2010 года, когда оно вышло, а с тех пор почти и не допиливалось.

    Были и приятные моменты:
    1. Загрузчик умеет тянуть ядро/бареметалл по тфтп, а ядро линуха из коробки монтирует рутфс по нфс.
    2. Мне хватило одного ядра чтобы всасывать SD чб картинку (raw практически) по сети юдп пакетами, немного её облагораживать (растягивать яркость, стабилизировать дрожания/движения) и выплёвывать по PCI-E в девайс. Но учитывая слабость железки пришлось тюнить линикус, увеличить буфера чтобы пока один кадр обрабатывается второй мог уместится в буфере сокета. Загрузка проца (одного единственно доступного ядра) при этом получалась до 70%. Без ухищрений (SIMD и прочего), оптимизированный си код, без асма и опенмп.

    Это пост ради кармы что ли?
    У меня лично никакого желания больше пилить под с66** нет, это не имеет перспектив, я вообще не уверен что оно ещё не EOL.
    Курсы по этому — скорее трата времени, ибо лучше изучать что то живое, если не х86/арм/мипс то эльбрус или эти убогие контроллеры, ардуины там всякие, которыми любят обмазываться некоторые.

    Я рад за всех кто выпускает и работает с этим, респект за хардкор и терпение.
    Но признайтесь что для дома, для семьи оно практически не годно из за высокого порога вхождения и стоимости, а зарабатывать деньги — на нём много не заработаешь, мало кому оно надо и перспектив нет, ниша узкая.


    1. serg_p
      29.06.2017 19:48

      Скорее пациент-мертв -а не наличие ниши


      1. dernuss
        29.06.2017 19:57

        А заказать вполне можно)
        http://www.ti.com/product/TMS320C6678/samplebuy


    1. dernuss
      29.06.2017 19:53

      1. Оно уже старое, ему 7+ лет.

      А конкурентов особо нет, если только keystone 2

      2. Оно, мать его, AMP а не SMP

      Оно не для запуска линуксов, оно вообще для DSP. Фактически только baremetal.

      Но признайтесь что для дома, для семьи оно практически не годно из за высокого порога вхождения и стоимости, а зарабатывать деньги — на нём много не заработаешь, мало кому оно надо и перспектив нет, ниша узкая.

      Эта штука понятно что не для дома и для семьи. Это для работы.
      Ибо лучше и дешевле пока нет(


      1. lingvo
        29.06.2017 20:40

        Оно не для запуска линуксов, оно вообще для DSP. Фактически только baremetal.

        А с baremetal там одно удовольствие работать. Садомазо, я имею ввиду.


        В конце концов все справедливо отмечают очень высокую сложность работы с этим процессором, в том числе из-за сложной архитектуры и отсутствия нормальных доков. А "для работы" это важно настолько, что сокращает нишу применения данного процессора до "когда, ну вообще больше ничего нельзя применить", или "у нас был DSP, который устарел и надо срочно найти опять DSP, так как боимся, что наш софт больше нигде не полетит".
        Т.е когда у разработчика появляется хоть какой-нибудь выбор решить задачу другим путем, он вряд-ли обратит внимание на данный процессор.


        1. dernuss
          29.06.2017 20:44

          А для fpga почти везде baremetal.


          1. lingvo
            29.06.2017 20:56

            А для fpga почти везде baremetal.

            А для чего нужна операционка?


            1. dernuss
              29.06.2017 21:03

              Спросите лучше у Ivan_83 ;)
              Честно говоря у меня нет ни какого желания с вами спорить.
              Мне в этом плане всё равно что победит, FPGA или DSP или FPGA + DSP или что то ещё.
              Я без работы не останусь;)

              Однако у 6678 отличная производительность ;) на доллар и на Ватт.

              П.С. Кроме работы я бывает занимаюсь всякой ерундой, об этом есть пара статей на geektimes.


              1. lingvo
                29.06.2017 22:51

                А мне, к сожалению, не все равно, хотя я тоже без работы не останусь.
                Мне совсем не наплевать, если через 5 лет придется выкинуть все, что вложено в этот DSP и начать разрабатывать заново на другой платформе — ПЛИС, x86 или ARM. В моем случае затраты составят тысяч 200 зеленых, так как применение ответственное и другая платформа означает полную переквалификацию железа и полное тестирование софта.
                А все потому, что разработчики выбрали этот DSP чисто от фонаря не изучив его и будущее технологии. И это при том, что они уже два раза обожглись на DSP от Аналогов по причине их снятия с производства.


                1. dernuss
                  29.06.2017 23:38

                  И это при том, что они уже два раза обожглись на DSP от Аналогов по причине их снятия с производства.

                  если речь про тигершарки, то они вполне сейчас заменяются миландром;) Между прочим миландр с ВП;)

                  А вообще ни что не вечно:)


  1. dernuss
    29.06.2017 21:03

    .