Код документа: RU2182375C2
Изобретение относится к памяти компьютера и, более конкретно, к разделению областей памяти и/или обновлению содержимого флэш-памяти. Оно находит конкретное применение в приемнике-декодере в системе вещания и приема, в частности приемнике-декодере интерактивной спутниковой системы цифрового телевидения и/или радио. Однако будет понятно, что применение настоящего изобретения не ограничивается этой системой или системами данного типа, а вообще применимо к широкому классу компьютерных систем.
В компьютерных системах, в частности системах, где компьютерная система является частью некоторой большей системы, такой как приемник-декодер для системы цифрового телевидения или радио, размер памяти часто ограничен. Это означает, что память должна быть организована таким образом, чтобы использование пространства памяти различными функциями, запрашиваемыми системой, было минимизировано. Кроме этого, может также потребоваться минимизировать время, необходимое для доступа хотя бы к некоторым частям памяти.
Один аспект предлагаемого изобретения касается, в частности, обеспечения или организации буферов в памяти.
Традиционный метод организации буферов - динамическая система выделения требуемых буферов. Однако в данном контексте эта стандартная система будет иметь некоторые недостатки. Она имеет тенденцию приводить к фрагментации памяти, и ее быстродействие ограничивается необходимостью в выполнении дополнительных избыточных операций. Кроме того, при возникновении необходимости расширения буфера может потребоваться перемещение блоков памяти для создания пространства для расширения.
Согласно одному аспекту настоящего изобретения предлагается система для определения и адресации буферов в области памяти компьютерной системы, содержащая средство хранения размеров пулов для сохранения множества размеров пулов; средство хранения размера буферов для сохранения размера буферов для каждого пула; вычислительное средство для вычисления, исходя их указанных средств, адреса в желаемом буфере в желаемом пуле. Предпочтительно предусмотрено средство для определения размеров пулов в кумулятивной форме и сохранения их в этой форме в средстве хранения размеров пулов. В начале каждого пула может быть определена зарезервированная область и предусмотрено средство, предназначенное для выбора либо непосредственно кумулятивного размера пула, либо выхода вычислительного средства. Желаемый номер пула, желаемый номер буфера и желаемый байт могут быть проверены на выход за границу допустимого диапазона.
В настоящее время существует множество типов компьютерной памяти. Важнейшим различием между различными видами памяти является различие между энергозависимой и энергонезависимой памятью. Энергозависимая память сохраняет свое содержимое только до тех пор, пока на нее подается напряжение, и теряет свое содержимое, как только напряжение отключается, в то время как энергонезависимая память сохраняет свое содержимое неограниченно долго даже после отключения питания. Еще одним важным различием является различие между записываемой памятью и памятью, доступной только для чтения.
Энергозависимая память обычно представляется оперативной памятью (RAM), в то время как существуют различные виды энергонезависимой памяти. Оперативная память обычно записываемая, в то время как память только для чтения представляется постоянным запоминающим устройством (ПЗУ или ROM). Последнее различие не обязательно является жестким. Конечно, любая память является в некотором смысле записываемой, хотя бы один раз, но некоторые виды ПЗУ допускают изменение своего содержимого, хотя и с некоторыми затруднениями. Так, существуют такие типы памяти только для чтения, как ППЗУ (программируемое (то есть записываемое) запоминающее устройство (PROM)), электрически стираемое ППЗУ (EEPROM) и флэш-память.
Различные типы памяти имеют разные характеристики (например, разное время чтения и разную стоимость), поэтому во многих случаях желательно использовать комбинацию нескольких разных типов в одной компьютерной системе.
Другой аспект предлагаемого изобретения касается флэш-памяти. Флэш-память, вообще говоря, относится к ПЗУ-подобным устройствам памяти в том смысле, что она энергонезависима. Она также обычно предназначена для использования ПЗУ-подобным образом, для считывания из нее, но без записи в нее. В то же время флэш-память может записываться, хотя и с некоторыми затруднениями. В частности, флэш-память обычно разделяется на страницы, каждая из которых многокилобайтного размера, и запись во флэш-память осуществляется страницами. Более подробно, для записи во флэш-память необходимо сначала стереть целую страницу и затем записать новое содержимое в стертую страницу; кроме этого, запись должна быть обязательно одной непрерывной операцией (естественно, между стиранием и записью может быть задержка).
В принципе, информация во флэш-памяти может быть организована в виде блоков любого размера, от одного слова и больше. Однако на практике она обычно организовывается в виде блоков значительного размера. Блок может содержать данные, например, таблицы постоянной или полупостоянной информации, программу или подпрограмму. Размеры блоков обычно выбираются меньше, чем размер страницы (если блок больше, чем страница, он обычно просто разделяется на подблоки, которые меньше размера страницы).
Обычно при обновлении флэш-памяти желательно сохранять некоторую из уже имеющейся в ней информацию. Для этого необходимо подлежащую обновлению страницу считать в оперативную память в виде образа страницы; затем этот образ в оперативной памяти может быть обновлен путем вставки новой информации, подлежащей вводу в эту страницу. В это же время из страницы может быть удалена любая информация, которая больше не нужна. Затем обновленный образ может быть записан обратно во флэш-память.
В общем случае размер блока не фиксирован, то есть разные блоки могут быть разных размеров. Очевидно, что это может вызвать затруднения в случае, когда некоторые существующие блоки должны быть удалены и новые блоки добавлены. Эти затруднения в значительной мере можно преодолеть, если обеспечить возможность перемещения блоков, таким образом, что при обновлении страницы блоки, которые должны остаться в этой странице, переупорядочиваются, так что происходит слияние всех неиспользуемых участков в один большой неиспользуемый участок.
Если блоки перемещаемые, то к ним нельзя адресоваться с помощью фиксированных адресов. Вместо этого необходимо поддерживать некоторую структуру данных местоположения или адресации блоков, чтобы блоки можно было легко находить с помощью некоторого имени или дескриптора. При использовании блоков разного размера для этого требуется информация как о расположении, так и о природе содержимого блоков. Это может быть достигнуто разными путями. Так, можно поддерживать в начале флэш-памяти подробный каталог блоков (их расположение и природа содержимого), или каталог расположения блоков может поддерживаться в начале флэш-памяти, и каждый блок может содержать заголовок, отражающий природу содержимого блока. Как альтернатива, для каждой страницы флэш-памяти можно поддерживать отдельную структуру данных местоположения блоков.
Все эти структуры данных местоположения блоков имеют общую особенность, состоящую в том, что обновление флэш-памяти необходимо при любом изменении ее содержимого. Очевидно, что запись нового блока требует обновления флэш-памяти; удаление блока точно так же требует обновления. Хотя в физическом удалении блока нет необходимости, нужно обновлять структуру данных местоположения блоков, чтобы указать, что блок более недействителен.
Было замечено, что необходимость обновления флэш-памяти может быть ограничена случаем добавления новых блоков; другими словами, блоки могут эффективно удаляться без необходимости обновления флэш-памяти. Для обеспечения этого структура данных местоположения блоков содержится, хотя бы частично, во внешней памяти за пределами самой флэш-памяти, предпочтительно, в памяти электрически стираемого ППЗУ.
Внешняя память может содержать, по существу, всю структуру данных местоположения блоков, то есть адреса блоков и дескрипторы. Как альтернатива, внешняя память может содержать только адреса расположения блоков во флэш-памяти, а дескрипторы блоков содержатся во флэш-памяти в качестве заголовков самих блоков. В обоих случаях, внешний каталог может быть организован либо как одна структура для флэш-памяти в целом, либо используя постраничный подход.
В то же время предпочтительно минимизировать размер внешней памяти путем хранения в ней только признаков действительности каждого блока, а адреса блоков и дескрипторы блоков хранить в самой флэш-памяти. Это уменьшает внешнюю память до размеров битового массива признаков действительности. Чтобы удалить блок из флэш-памяти, все, что требуется, - это изменить бит для данного блока во внешней памяти со значения "действителен" на "недействителен".
Возвращаясь к описанной выше процедуре обновления страницы, отметим, что в ней имеется проблема. Если во время этой процедуры произойдет прерывание питания системы (или произойдет другое серьезное прерывание работы системы, или произойдет аварийный останов), содержимое оперативной памяти будет потеряно, поэтому обновленный образ страницы флэш-памяти, подлежащий записи во флэш-память, будет потерян. Информация, ранее подлежащая обновлению в соответствующей странице флэш-памяти, будет стерта перед записью обновленной страницы обратно во флэш-память (и обновленная страница будет записана обратно во флэш-память только частично, так что часть ее содержимого будет утеряна; и, поскольку точный момент, в который произошел сбой питания, в общем случае неизвестен, обычно не будет достоверно известно, какая часть содержимого обновленной страницы была записана во флэш-память).
Одной из целей настоящего изобретения является смягчение или преодоление данной проблемы.
В соответствии с этим аспектом, настоящим изобретением предлагается система флэш-памяти в компьютере, в которой флэш-память разделяется на отдельно записываемые страницы, содержащая: средство для копирования страницы флэш-памяти в виде образа страницы в оперативную память и обновления образа страницы; средство для записи образа страницы назад, в другую страницу во флэш-памяти; главную таблицу записи, хранящуюся в отдельной энергонезависимой памяти, указывающую действительные страницы во флэш-памяти; и средство для обновления главной таблицы записи в энергонезависимой памяти после обновления страницы во флэш-памяти. Предпочтительно память, в которой хранится главная таблица записи, - электрически стираемое ППЗУ. Доступ к флэш-памяти обычно будет осуществляться с помощью главной таблицы записи.
При нормальном режиме функционирования главная таблица записи будет отмечать некоторые страницы флэш-памяти как действительные, а остальные как недействительные; термин "недействительная" означает, что страница не содержит информации, подлежащей использованию. Страница может считаться недействительной по разным причинам; например, она может быть пустой, она может быть успешно скопирована в другую страницу, или при ее записи имел место сбой.
В предложенной системе обновление страницы включает копирование этой подлежащей обновлению страницы из существующей страницы во флэш-памяти в другую страницу (причем копирование включает обновление содержимого страницы). Таким образом, предлагаемая система должна всегда поддерживать хотя бы одну страницу как недействительную; такая недействительная страница (или страницы) может быть также названа как "свободная". При обновлении страницы главная таблица записи обновляется только после того, как копирование страницы завершено. Таким образом, если копирование страницы прерывается, главная таблица записи останется неизменной, так что оригинальная страница останется действительной, а новая страница останется отмеченной как свободная. Затем можно повторить попытку копирования или отказаться от нее.
Даже в только что описанной системе остаются потенциальные проблемы. Только что описанная система полагается на обновление главной таблицы записи. Следовательно, важно гарантировать высокую степень целостности этой главной таблицы записи.
Поскольку обновление главной таблицы записи будет очень быстрым по сравнению с обновлением страницы флэш-памяти, может обеспечиваться возможность проверки состояния источника питания непосредственно перед обновлением главной таблицы записи и использование источника питания, который имеет достаточную емкость для поддержания системы в рабочем состоянии, по крайней мере, столько времени, сколько необходимо для обновления главной таблицы записи. Однако предпочтительно главная таблица записи содержит секцию обнаружения ошибок и целиком копируется в резервную копию таблицы записи сразу же после обновления. Система тогда будет содержать средство для проверки главной таблицы записи на наличие в ней ошибок при использовании ее для доступа к флэш-памяти, а также для использования резервной копии таблицы записи в случае наличия ошибок в главной таблице записи. Таким образом, если главная таблица записи содержит ошибку, система рассматривает последнее обновление флэш-памяти как недействительное, как будто обновление было прервано.
Конечно, существует вероятность того, что копирование главной таблицы записи в резервную копию таблицы записи будет прервано. Такое копирование, однако, осуществляется только после завершения обновления главной таблицы записи. Любой последующий доступ к флэш-памяти будет включать проверку главной таблицы записи; эта главная таблица записи не будет содержать ошибок, поэтому необходимости доступа к резервной копии таблицы записи не будет, и ее сбойное состояние ни на что не повлияет.
Однако во время следующего обновления флэш-памяти главная таблица записи будет обновляться. Как описано выше, это обновление может быть прервано и, если это произойдет, для доступа к флэш-памяти в ее состоянии до обновления должна будет использоваться резервная копия таблицы записи. Следовательно, нежелательно допускать ситуации, при которых резервная копия таблицы записи была бы сбойной. Это обычно не допускается путем копирования главной таблицы записи в резервную копию таблицы записи в качестве первого шага обновления флэш-памяти (или, по крайней мере, перед записью обновленного образа страницы из оперативной памяти в свободную страницу флэш-памяти).
Из приведенного выше описания следует, что информация или блоки данных во флэш-памяти не располагаются в фиксированных позициях. По мере обновления страниц флэш-памяти блоки данных в них перемещаются с одной страницы на другую, и могут также менять свое положение в странице. Поэтому для того, чтобы при необходимости эти блоки данных могли быть найдены, требуется какой-нибудь каталог. Информация такого каталога может содержаться в таблице записи или в самих страницах флэш-памяти, или быть разделена между ними.
Было отмечено, что информация каталога, в общем, обычно не изменяется, если только не изменяются сами блоки данных, так что ее удобно хранить вместе с блоками данных во флэш-памяти. Однако существует один тип информации каталога, которая может изменяться, когда сами данные остаются неизменными; это информация о том, является ли блок данных действительным. Следовательно, информацию о действительности блока данных удобно хранить в таблице записи. Это позволяет эффективно удалять блоки данных без обновления флэш-памяти; все, что для этого необходимо, - это изменить значение индикатора данного блока с действительного на недействительное.
Конечно, если страница с этим блоком через некоторое время обновляется, блоки с недействительным значением признаков не будут скопированы из страницы в образ страницы в оперативной памяти, так что они будут физически удалены в этот момент (фактически они останутся в старой странице, которая станет новой свободной страницей, но там они уже будут недоступны, и когда эта новая свободная страница будет использоваться для следующего обновления флэш-памяти, их физическое удаление будет завершено).
Следовательно, таблица записи предпочтительно содержит для каждой страницы набор признаков действительности блоков данных, которые могут представлять собой отдельные биты. Это увеличивает размер таблицы записи, что, в свою очередь, означает, что для обеспечения секции обнаружения ошибок могут использоваться различные стандартные методики; предпочтительно использовать контроль циклическим избыточным кодом (CRC), хотя может использоваться код обнаружения или исправления ошибок, или функции хеширования.
Признаки действительности блоков для страницы в таблице записи должны, естественно, быть связаны с соответствующими блоками в данной странице флэш-памяти. Этого можно добиться путем хранения в странице флэш-памяти блоков в такой же последовательности, что и индикаторов в таблице записи. Однако предпочтительно иметь заголовок каждой страницы во флэш-памяти, который содержит набор указателей на фактические местоположения блоков в данной странице; этим обеспечивается большая гибкость в упорядочении самих блоков в странице.
Идентифицирующая информация (например, имя блока) для каждого блока на странице может содержаться либо в заголовке страницы, либо располагаться в начале самого блока как заголовок блока. В предпочтительной реализации используется второй из указанных вариантов. Такая идентифицирующая информация может содержать информацию для связи блока, так что большие объемы данных могут быть разбиты на 2 или более блоков.
В дополнительном аспекте данного изобретения предлагается приемник/декодер для использования в цифровой системе вещания и приема, содержащий упомянутую систему, или систему памяти, или флэш-память, как описано выше.
Предпочтительно приемник-декодер дополнительно содержит средство для приема сжатого сигнала MPEG-типа (то есть сигнала, сжатого в соответствии с алгоритмом сжатия подвижного изображения и звука MPEG), средство для декодирования принятых сигналов с целью получения телевизионного видео- и/или радиосигнала и средство для передачи этого сигнала в телевизор и/или радиоприемник.
Предпочтительные характеристики предлагаемого изобретения будут описаны ниже, исключительно в виде примера, со ссылкой на прилагаемые чертежи, где:
на фиг. 1
представлена общая архитектура системы цифрового телевидения согласно предпочтительной реализации настоящего изобретения;
на фиг.2 - архитектура интерактивной системы в системе цифрового
телевидения;
на фиг.3 - расположение файлов в загружаемом в приемник/декодер модуле;
на фиг.4 - упрощенная функциональная схема соответствующих частей компьютерной системы;
на фиг.5 - схема организации части оперативной памяти;
на фиг.6 - структура команды "Задать Буферы";
на фиг.7 - структура устройства управления памятью;
на фиг.8
- функциональная схема системы;
на фиг.9 - логическая структура флэш-памяти и таблиц записи;
на фиг.10 - логическая структура страницы флэш-памяти и подсекции таблицы записи.
Общая структура системы вещания и приема цифрового телевидения 1000 согласно данному изобретению приведена на фиг.1. Изобретение включает самую обычную систему цифрового телевидения 2000, которая использует известную систему сжатия MPEG-2 для передачи сжатых цифровых сигналов. Более подробно, устройство сжатия MPEG-2 2002 в центре вещания принимает поток цифровых сигналов (обычно поток видеосигналов). Устройство сжатия 2002 подключается к мультиплексору и скремблеру 2004 с помощью канала 2006. Мультиплексор 2004 принимает множество входных сигналов, собирает один или несколько несущих потоков и передает сжатые цифровые сигналы в передатчик 2008 центра вещания через канал 2010, тип которого, естественно, может быть различным, включая каналы телекоммуникаций. Передатчик 2008 передает электромагнитные сигналы через канал "земля-спутник" 2012 на спутниковый ретранслятор 2014, где выполняется их обработка электронными средствами и вещание через виртуальный канал "спутник-земля" 2016 на наземный приемник 2018, обычно имеющий форму тарелки, принадлежащий конечному пользователю или арендуемый им. Сигналы, принимаемые приемником 2018, передаются в совмещенный приемник-декодер 2020, принадлежащий конечному пользователю или арендуемый им и подключенный к телевизору 2022 конечного пользователя. Приемник-декодер 2020 декодирует сжатый MPEG-2 сигнал в телевизионный сигнал для телевизора 2022.
Система условного доступа 3000 подключается к мультиплексору 2004 и приемнику-декодеру 2020 и располагается частично в центре вещания и частично в декодере. Она позволяет конечному пользователю осуществлять доступ к вещательным передачам цифрового телевидения от одного или нескольких операторов вещания. В приемник-декодер 2020 может устанавливаться смарт-карта, которая может декодировать сообщения, относящиеся к коммерческим предложениям (одна или несколько телевизионных программ, продаваемых оператором вещания). С использованием декодера и смарт-карты пользователь может покупать передачи в режиме подписки или оплаты за просмотр (PPV).
Интерактивная система 4000, также подключенная к мультиплексору 2004 и приемнику-декодеру 2020 и также располагающаяся частично в центре вещания и частично в декодере, позволяет конечному пользователю взаимодействовать с различными приложениями через модемный обратный канал 4002.
На фиг. 2 приведена общая структура телевизионной интерактивной системы 4000 системы цифрового телевидения 1000 в соответствии с настоящим изобретением.
Например, интерактивная система 4000 позволяет конечному пользователю покупать товары по экранным каталогам, просматривать локальные новости и карты погоды по запросу и играть в игры, используя свой телевизор.
Интерактивная система 4000 содержит, вообще говоря, четыре основных элемента:
- средство разработки 4004 в центре вещания или в другом месте, позволяющее оператору
вещания создавать, разрабатывать, отлаживать и тестировать приложения;
- сервер приложений и данных 4006 в центре вещания, соединенный со средством разработки 4004, для предоставления
оператору вещания возможности подготавливать, удостоверять подлинность и форматировать приложения и данные для отправления в мультиплексор и скремблер 2004 для вставки его в несущий поток MPEG-2
(обычно в его приватную секцию), подлежащий вещанию для конечного пользователя;
- виртуальную машину, содержащую подсистему реального времени (RTE - Real Time Engine) 4008, которая
представляет собой исполняемый код, инсталлированный в приемнике-декодере 2020, принадлежащем конечному пользователю или арендуемом им, для обеспечения конечному пользователю возможности принимать,
удостоверять подлинность, разворачивать и загружать приложения в рабочую память декодера 2020 для выполнения. Подсистема 4008 также выполняет резидентные приложения общего назначения. Подсистема 4008
не зависит от аппаратного обеспечения и операционной системы;
- обратный модемный канал 4002 между приемником-декодером 2020 и сервером приложений и данных 4006 для подачи сигналов,
указывающих серверу 4006 вставлять данные и приложения в несущий поток MPEG-2 по требованию конечного пользователя.
Телевизионная интерактивная система работает с использованием т.н. "приложений", которые управляют функционированием приемника-декодера и различными устройствами, входящими в его состав. Приложения представлены в подсистеме 4008 как т.н. "файлы ресурсов". "Модуль" - это набор файлов ресурсов и данных. Для формирования одного приложения могут использоваться несколько модулей. "Том памяти" приемника-декодера - это пространство для хранения модулей. Для загрузки модулей используют "интерфейсы". Модули могут загружаться в приемник/декодер 2020 из несущего потока MPEG-2.
Понятия, упомянутые в предыдущем абзаце, ниже будут описаны подробнее.
Применительно к данному описанию, приложение - это фрагмент компьютерного кода для управления высокоуровневыми операциями приемника-декодера 2020. Например, когда конечный пользователь позиционирует фокус устройства дистанционного управления 2026 (подробно показанный на фиг.4) на объекте кнопки, видимом на экране телевизора 2022, и нажимает клавишу подтверждения, выполняется последовательность инструкций, соответствующая этой кнопке.
Интерактивное приложение обеспечивает меню и исполняет команды по соответствующему запросу конечного пользователя и предоставляет данные в соответствии с назначением данного приложения. Приложения могут быть либо резидентными приложениями, т.е. хранящимися в ПЗУ (либо в FLASH памяти, либо другой энергонезависимой памяти) приемника-декодера 2020, либо передающимися путем вещания и загружаемыми в ОЗУ (или FLASH) декодера 2020.
Примерами приложений являются:
- Приложение инициализации.
Приемник-декодер 2020 снабжен резидентным приложением инициализации, которое является адаптируемым набором модулей (более подробно этот термин поясняется ниже) и позволяет приемнику-декодеру 2020 быть
непосредственно готовым к работе в среде MPEG-2. Это приложение предоставляет базовые функции, которые могут быть при необходимости модифицированы оператором вещания. Оно предоставляет также интерфейс
между резидентными приложениями и загружаемыми приложениями.
- Приложение запуска. Приложение запуска позволяет выполняться в приемнике-декодере 2020 любому приложению, либо загружаемому, либо резидентному. Это приложение работает как программа начальной загрузки, выполняемая при поступлении услуги для того, чтобы запустить приложение. Приложение запуска загружается в оперативную память и, следовательно, может быть легко обновлено. Оно может быть сконфигурировано таким образом, что интерактивные приложения, доступные по разным каналам, могут быть выбраны и выполнены либо сразу же после загрузки, либо после предварительной загрузки. В случае предварительной загрузки приложение загружается в память 2024 и активируется приложением запуска по необходимости.
- Руководство по программам. Руководство по программам - это интерактивное приложение, которое предоставляет полную информацию по программам. Например, оно может содержать информацию, скажем, о программе телевизионных передач на неделю, предоставляемых каждым каналом из пакета ("букета") каналов цифрового телевидения. Нажатием на клавишу устройства дистанционного управления 2026 конечный пользователь получает доступ к добавочному экрану, который с перекрытием накладывается на передачу, которая демонстрируется в данный момент на экране телевизора 2022. Этот добавочный экран представляет собой средство просмотра, предоставляющее информацию о текущих и последующих передачах каждого канала букета цифрового ТВ. С помощью нажатия на другую клавишу устройства дистанционного управления 2026 конечный пользователь получает доступ к приложению, которое выдает на экран информацию о программе передач на неделю. Конечный пользователь может также производить поиск и сортировку программ по простым и индивидуальным критериям. Конечный пользователь может также получать доступ непосредственно к выбранному каналу.
- Приложение PPV (PPV - Pay Per View, оплата производится за каждую просмотренную передачу). Приложение PPV - это интерактивная услуга, имеющаяся на каждом PPV канале букета цифрового ТВ с системой условного доступа 3000. Конечный пользователь может получать доступ к указанному приложению с использованием ТВ меню или броузера каналов. Кроме того, это приложение запускается автоматически, как только на PPV канале обнаруживается PPV передача. Затем конечный пользователь может купить текущую программу либо с помощью его дочерней смарт-карты 3020, или с помощью сервера связи 3022 (с использованием модема, телефона и DTMF кодов (кодов тонового набора), MINITEL, или другим подобным образом). Это приложение может быть резидентным в ПЗУ приемника-декодера 2020 или загружаться в оперативную память приемника-декодера 2020.
- Приложение загрузки в ПК. Конечный пользователь может по запросу загружать компьютерное программное обеспечение с использованием приложения загрузки в ПК.
- Приложение просмотра журнала. Приложение просмотра журнала обеспечивает периодическое вещание видеоизображений с обеспечением пользователю возможности навигации с помощью кнопок на экране.
- Приложение телевикторины. Приложение телевикторины предпочтительно синхронизируется с вещаемой программой телевикторины. Например, на экран телевизора 2022 выдаются несколько возможных ответов, и пользователь может выбрать ответ с помощью устройства дистанционного управления 2026. Приложение телевикторины может информировать пользователя, правилен его ответ или нет, и может подсчитывать набранные пользователем очки.
- Приложение дистанционных покупок. В одном из примеров приложения дистанционных покупок предложения товаров к продаже транслируются на приемник-декодер 2020 и затем выдается на экран телевизора 2022. С помощью устройства дистанционного управления пользователь может выбрать для покупки какой-либо конкретный товар. Заказ на этот товар передается через обратный модемный канал 4002 в сервер приложений и данных 4006 или в отдельную систему продаж, номер телефона которой был загружен в приемник-декодер, возможно - с поручением дебетовать счет кредитной карты, которая установлена в одном из устройств считывания карты 4036 приемника-декодера 2020.
- Приложение дистанционных банковских услуг. В одном из примеров приложения дистанционных банковских услуг пользователь устанавливает банковскую карту в одно из устройств считывания карты 4036 приемника-декодера 2020. Приемник-декодер 2020 звонит банку пользователя с использованием номера телефона, записанного в банковской карте пользователя или хранящегося в приемнике-декодере, и затем приложение предоставляет набор средств, которые могут быть выбраны с помощью устройства дистанционного управления 2026, например, для загрузки по телефонной линии отчета о состоянии счета, перевода средств с одного счета на другой, запрашивания чековой книжки и т.д.
- Приложение Интернет-броузера. В одном примере приложения
Интернет-броузера инструкции от пользователя, такие как запрос просмотра веб-страницы, имеющей конкретный URL,
вводятся с использованием устройства дистанционного управления 2026, и они пересылаются по обратному модемному каналу 4002 в сервер приложений и данных 4006. Соответствующая веб-страница затем
включается в транслируемые из центра вещания данные, принимаемые приемником-декодером 2020 через канал "земля-спутник" 2012, ретранслятор 2014 и канал "спутник-земля" 2016, и затем выдается на экран
телевизор 2022.
Приложения сохраняются в ячейке памяти приемника-декодера 2020 и представляются в виде файлов ресурсов. Под файлами ресурсов понимают файлы библиотек описаний графических объектов, файлы библиотек блоков переменных, файлы последовательностей команд, файлы приложений и файлы данных.
Файлы библиотек описаний графических объектов описывают экраны, человеко-машинный интерфейс приложения. Файлы библиотек блоков переменных описывают структуры данных, которыми оперирует приложение. Файлы последовательностей команд описывают функциональные действия, выполняемые приложением. Файлы приложений предоставляют точки входа для приложений.
Приложения, составляемые таким способом, могут использовать файлы данных, такие как файлы библиотек пиктограмм, файлы изображений, файлы шрифтов, файлы таблиц цветов и файлы текстов ASCII. Интерактивное приложение может также получать оперативные данные, задействуя входы и/или выходы.
Подсистема 4008 загружает в свою память только те файлы ресурсов, которые необходимы ей в данное время. Эти файлы ресурсов считываются из файлов библиотек описаний графических объектов, файлов последовательностей команд и файлов приложений; файлы библиотек блоков переменных записываются в память после вызова процедуры загрузки модулей и остаются там до тех пор, пока не будет произведен специальный вызов процедуры выгрузки модулей.
Со ссылкой на фиг.3, модуль 4010, как, например, модуль дистанционных покупок, представляет собой набор файлов ресурсов и
данных, содержащий следующее:
один файл приложения 4012;
неопределенное количество файлов библиотек описаний графических объектов 4014;
неопределенное количество файлов
библиотек блоков переменных 4016;
неопределенное количество файлов последовательностей команд 4018; и
если необходимо, файлы данных 4020, такие как файлы библиотек пиктограмм, файлы
изображений, файлы шрифтов, файлы таблиц цветов и файлы текстов ASCII.
В потоке данных MPEG каждый модуль образует группу MPEG таблиц. Каждая MPEG таблица может быть отформатирована в виде некоторого числа секций. В потоке данных MPEG каждая секция имеет размер до 4 кбайт. Для данных, передаваемых, например, через последовательный или параллельный порт модули точно так же разделяются на таблицы и секции, и размер секции варьируется в зависимости от среды передачи.
Модули передаются в потоке данных MPEG в форме пакетов данных, обычно размером 188 байт, в потоках данных соответствующего типа, например, потоках видеоданных, потоках аудиоданных и потоках данных телетекста. Каждому пакету предшествует идентификатор пакета (PID) из 13 битов, по одному PID для каждого пакета, передаваемого в потоке данных MPEG. Таблица распределения программы (РМТ - Programme Map File) содержит список различных потоков данных и определяет содержимое каждого потока данных, согласно соответствующему PID. Благодаря PID устройство может узнавать о наличии приложений в потоке данных, указанный PID идентифицируется с использованием РМТ.
Как показано на фиг. 4, приемник-декодер содержит оперативную память 4022, соединенную с микропроцессором 20, который также соединен с флэш-памятью 4024, электрически стираемой памятью ППЗУ 4026' и памятью ПЗУ 4026 посредством шины 21. Оперативная память 4022 подключена также к устройству DMA 22 (устройству прямого доступа к памяти), через которое данные (например, поток данных MPEG) могут вводиться непосредственно в оперативную память.
Оперативная память имеет размер 256 кбайт и разделена на 3 области:
область 24, которая зарезервирована для использования изготовителем
системы;
область 25, которая зарезервирована для использования виртуальной машиной (VM), и область пользователя 26, которая используется для размещения различной информации, такой как буферы,
приложения 30, 30', 30", данные и т.д. Упомянутая система определяется функциональной спецификацией, предоставляющей изготовителю значительную свободу в проектировании аппаратного обеспечения для
реализации самой системы; область памяти 24 используется, в сущности, в качестве интерфейса между функциями, определяемыми функциональной спецификацией, и аппаратными средствами. VM в области 25, в
сущности, является видом операционной системы для компьютерной системы, и VM и микропроцессор 20 могут совместно рассматриваться как подсистема реального времени (RTE) 4008. В различные моменты
времени в память могут загружаться разные приложения.
Между VM и приложениями необходимо обеспечить возможность обмена информацией, как и между самими различными приложениями. Эта возможность обеспечивается в основном с помощью буферов, которые являются общими для VM и различных приложений.
В предложенной системе для определения области буферов 32 в области памяти пользователя 26 и разделения области буферов на отдельные буферы используется специальная команда - команда "Задать Буферы". Таким образом определяется некоторое число пулов буферов; для каждого пула задаются размер буферов в пуле и количество буферов в пуле. На фиг.6 приведен логический формат команды "Задать Буферы". Она содержит начальный параметр 35, определяющий количество пулов NP, за которым следует множество параметров 36, 36', по одному для каждого пула, причем каждый такой параметр пула содержит первый подпараметр 37, определяющий размер PS пула (а именно, количество буферов в пуле), и второй подпараметр 38, определяющий размер BS буферов в пуле (а именно, количество байтов в буфере).
Для удобства ниже перечислены эти и другие параметры,
используемые ниже:
NP: количество пулов для каждого пула -
PS: размер пула (количество буферов в пуле)
BS: размер буферов
PN: номер пула
BN: номер буфера
(в пуле)
ByN: номер байта (в буфере)
В области памяти пользователя 26 пулы буферов располагаются последовательно от начала области, как показано на фиг.5. Фактическое расположение
показано для трех пулов, где пул 1 состоит из 5 буферов среднего размера, пул 2 состоит из 6 буферов малого размера и пул 3 состоит из 1 буфера большого размера. Как можно увидеть, каждый пул буферов
содержит в своем начале зарезервированную секцию величиной 16 байтов. Эта секция разделяется на 12-байтовую подсекцию, которая доступна пользователю для использования в качестве флагов буферов, и
4-байтовую подсекцию, которая зарезервирована для использования VM.
RTE 4008 реализует менеджер буферов, который может рассматриваться как генератор адресного пути между шиной 21 и областью данных пользователя 26 в оперативной памяти 4022. Логическая организация менеджера буферов приведена на фиг.7. Сначала менеджер буферов инициализируется командой "Задать Буферы" под управлением микропроцессора 20, и затем он используется для адресации желаемого буфера.
В менеджере буферов подпараметры PS и BS каждого пула по очереди подаются в блок умножения 35, который формирует их произведения PS•BS. Аккумулятор 36 инициализируется значением 64К (которое представляет собой начальный адрес области пользователя 26 в оперативной памяти 4022), и в него подаются последовательно произведения PS•BS через блок сложения 37, который добавляет 16 в каждое произведение; это число 16 является размером зарезервированной секции в начале каждого пула. Таким образом, аккумулятор 36 содержит, раз за разом, начальные адреса каждого пула буферов, один за одним. Эти начальные адреса пулов подаются в кумулятивный адресный регистр 38, в котором они сохраняются один за одним. Кроме этого, во время инициализации количество пулов NP записывается в регистр количества пулов 39, размеры пулов записываются в регистр размеров пулов 40 и размеры буферов BS записываются в той же последовательности в регистр размеров буферов 41.
После инициализации возможна адресация буферов. Для адресации буфера желаемый буфер определяется номером пула PN для желаемого пула, номером буфера BN для желаемого буфера в этом пуле и номером байта ByN для желаемого байта в этом буфере.
Номер пула PN используется для выбора соответствующих параметров для данного пула из кумулятивного регистра 38 и регистра размеров буферов 41. Размер буфера BS подается в блок умножения 45, где он умножается на номер буфера BN. Результирующее произведение подается в инкрементор 46, который добавляет 16 к этому произведению. Выход кумулятивного регистра 38 подается в блок сложения 47, где он складывается с номером байта ByN. Выход инкрементора 46 подается в блок сложения 48, где он складывается с выходом блока сложения 47. Выход блока сложения 48 передается через мультиплексор 49 как желаемый адрес; это и есть адрес желаемого байта из желаемого буфера из желаемого пула.
Менеджер буфера содержит также схему проверки на ошибки. Номер пула PN подается в компаратор 53, в который также подается значение параметра числа пулов NP из регистра 39, для проверки того, что выбранный номер пула не превышает общего числа пулов; т.е. производится проверка того, что выбранный пул находится в области буфера. Номер буфера BN подается в компаратор 54, в который подается также выбранный параметр из регистра размеров пулов 40, для проверки того, что выбранный номер буфера не превышает количество буферов в выбранном пуле; т.е. производится проверка того, что выбранный буфер находится в выбранном пуле. Выбранный номер байта подается в компаратор 55, в который подается также размер буферов в выбранном пуле, для проверки того, что желаемый номер байта не больше, чем размер буфера, то есть для проверки того, что выбранный байт находится в выбранном буфере. Все эти компараторы имеют общий выход, который выдает сигнал ошибки ERR, если хотя бы одна из проверок неудачна.
В описании до сих пор предполагалось, что производилась адресация буфера. Однако может оказаться желательным адресоваться к зарезервированной или специальной начальной 16-байтовой области в пуле буферов. Выбор одного из этих двух вариантов управляется сигналом N/C, с помощью которого производится выбор между нормальным доступом к буферу и операциями, которые для удобства мы назовем операциями управления буферами. Для обычных обращений выбираются буферы; зарезервированная начальная область пула буферов выбирается только для операций управления.
Сигнал N/C подается в мультиплексор 49. Для обычных обращений к буферам этим сигналом выбирается выход блока сложения 48, как описано выше. Однако для операций управления в зарезервированной области пула мультиплексор вместо этого выбирает непосредственно выход блока сложения 47. Поскольку этот путь от кумулятивного регистра 38 не проходит через блок сложения 48, это приводит к выбору желаемого байта в зарезервированной области пула, а не в одном из буферов, следующих за зарезервированной областью.
Для операций управления в зарезервированной области пула компаратор 55 должен быть отключен. Соответственно, этот компаратор включается сигналом N/C для нормальных обращений к буферам и отключается для операций управления. В дополнительный компаратор 56 подается номер байта ByN и количество байтов в зарезервированных областях пула, то есть 16; он включается сигналом N/C для системных обращений. Этот компаратор выполняет проверку того, что желаемый номер байта не больше, чем 16, то есть производится проверка того, что выбранный байт находится в пределах зарезервированной области в начале выбранного пула. Очевидно, что эта проверка может быть усовершенствована, чтобы различать обращения к 12-байтовой подсекции, которая доступна для использования в качестве флагов буфера и т.п., и обращения к 4-байтовой подсекции, которая зарезервирована для использования RTE.
При желании команда "Задать Буферы" может также включать параметр "Конец Памяти Пользователя" 34, как показано на фиг.6, определяющий конец области памяти пользователя 26. Последний параметр в команде "Задать Буферы" будет записываться в соответствующий регистр и сможет быть использован для проверки того, что область буферов не выходит за пределы области памяти пользователя 26. (Обычно это исключительно маловероятно, поскольку необходимо оставить пространство для приложений 30, 30', 30". Однако это может произойти, если система спроектирована так, что область буферов располагается где-то в середине области памяти пользователя, а не в ее начале, как описано выше).
В принципе, команда "Задать Буферы" может использоваться для инициализации области буферов в любое время. Однако переинициализация области буферов приведет к потере всей (или почти всей) информации, уже находящейся в буферах, поэтому команда задания буферов будет обычно выполняться только при инициализации системы.
Согласно фиг. 8, система содержит флэш-память 4024, оперативную память 4022, электрически стираемое ППЗУ 4026, и все они подключены к микропроцессору 120 с помощью шины 121. (В альтернативном варианте, электрически стираемое ППЗУ может быть подключено непосредственно к микропроцессору 120.) Флэш-память разделяется на 8 страниц Р1-Р8 одинакового размера, как показано на фиг. 9. Одна из этих страниц, страница Р8, зарезервирована для использования изготовителем; оставшиеся страницы могут свободно использоваться пользователем.
На фиг.9 показаны регистр главной таблицы записи 122 и регистр резервной копии таблицы записи 123, которые являются резидентными в электрически стираемом ППЗУ 4026. Информация в этих таблицах находится в отчасти сжатой и закодированной форме. В частности, последняя секция 125 таблицы 122 - это байт CRC, и секция 126 перед ней - это номер страницы, который указывает свободную страницу. Первая секция 127 таблицы 122 состоит из шести подсекций от 127-1 до 127-6, по одной для каждой из действительных страниц флэш-памяти (то есть 6 оставшихся, без учета упомянутых свободной страницы и зарезервированной страницы Р8). Эти подсекции соответствуют, одна за одной, этим оставшимся страницам.
На фиг.10 показана логическая структура страницы Рn флэш-памяти и подсекции 127-m таблицы записи и взаимосвязь между ними (в зависимости от того, где находится свободная страница, m может равняться n или n-1).
Рассмотрим сначала страницу флэш-памяти; она может содержать максимум 16 блоков данных. Страница имеет заголовок 130, который содержит 16 секций, по одной на каждый возможный блок данных. Каждая секция заголовка 130 содержит смещение, или указатель, начала ее блока данных; этот указатель является, в сущности, адресом данного блока в данной странице. Следовательно, блоки данных 131, 131', в странице могут располагаться в любом порядке. Каждый блок данных содержит соответствующий заголовок 132, 132', который может содержать различные данные о блоке, такие как имя блока, номер версии, размер блока, информация о состоянии и т.д.
Подсекция 127-m таблицы записи состоит из 16 битов, каждый из которых является признаком действительности блока для соответствующей секции в заголовке страницы 130, как это показано.
Ниже будет описан процесс обновления страницы во флэш-памяти. Все операции, необходимые для обновления страницы, выполняются микропроцессором 120.
Сначала выполняется проверка достоверности главной таблицы записи в регистре 122; а именно, вычисляется CRC секций 126 и 127 и сравнивается с
запомненным CRC в секции 125. Затем главная таблица записи копируется в регистр резервной копии таблицы записи 123 (и, при желании, резервная копия таблицы записи может быть проверена на достоверность,
чтобы гарантировать отсутствие ошибок при копировании.)
Далее подлежащая обновлению страница (старая страница) копируется из флэш-памяти в оперативную память. Извлекается подсекция 127-m
главной таблицы записи для этой страницы, и любые блоки данных, помеченные как недействительные, удаляются из образа страницы в оперативной памяти. В образ страницы записываются новые блоки данных.
Может случиться, что новые блоки данных не будут сразу помещаться в окна между оставшимися исходными блоками данных. Эти оставшиеся блоки будут в основном разделены пустыми областями различного размера. Следовательно, они сдвигаются к началу образа страницы, чтобы "выдавить" неиспользуемые области между ними, при этом неиспользуемые области перемещаются в конец образа страницы и образуют одну большую неиспользуемую область. Этим гарантируется, что новые блоки данных смогут быть записаны в образ страницы (при условии, конечно, что объем страницы не будет превышен). Заголовок страницы в образе станицы, естественно, обновляется, путем изменения его указателей на новые положения блоков данных в образе страницы.
Подсекция таблицы записи для подлежащей обновлению страницы была предварительно извлечена из таблицы записи. Теперь эта извлеченная подсекция обновляется путем установления битов проверки действительности для любых новых блоков данных, добавленных в образ страницы.
Далее, вся секция 127 таблицы записи извлекается из регистра главной таблицы записи 122. Подсекция, соответствующая обновляемой странице (старой странице), удаляется. Это та подсекция, которая ранее и извлекалась, и была обновлена. Новая подсекция (соответствующая новой странице, например, свободной странице, в которую будет записана обновленная страница) вставляется в последовательность подсекций в подходящем месте. Для этого подсекции для любых страниц между старой и новой страницами сдвигаются так, чтобы заполнить подсекцию, которая была удалена, и освободить пространство для новой подсекции.
Далее, образ обновленной страницы из оперативной памяти копируется в свободную страницу, которая указывается номером свободной страницы в секции 126 главной таблицы записи.
Далее, номер страницы в секции свободных страниц изменяется на номер старой страницы, которая теперь становится новой свободной страницей.
Далее, обновленная таблица записи копируется в регистр главной таблицы записи 122. И, наконец, обновленное содержимое регистра главной таблицы записи 122 копируется в регистр резервной копии таблицы записи 123, и, при желании, содержимое главной таблицы записи в регистре 122 и/или резервной копии таблицы записи проверяется на достоверность.
При
перезапуске системы, например, после выключения питания, обе таблицы записи могут проверяться на достоверность; если любая из них оказывается недостоверной, она может быть заменена на достоверную (то
есть содержимое достоверной таблицы записи копируется в недостоверную таблицу записи.)
Очевидно, что настоящее изобретение было описано выше исключительно в виде примера, и возможны различные
модификации в пределах данного изобретения.
Каждая особенность, изложенная в описании, а также (где это уместно) пункты формулы и чертежи могут быть предоставлены независимо или в соответствующем сочетании.
В вышеупомянутых предпочтительных вариантах реализации некоторые средства предлагаемого изобретения реализованы с использованием программного обеспечения. Однако опытному специалисту, конечно, понятно, что любые эти средства могут быть реализованы аппаратно. Далее, понятно, что функции, выполняемые аппаратными средствами, программное обеспечение компьютера и тому подобное выполняются на или с использованием электрических и им подобных сигналов.
Перекрестные ссылки выполнены на наши совместно рассматриваемые заявки с той же самой датой подачи и озаглавленные как "Генерирование сигналов и вещание" (номер дела поверенного PC/ASD/19707), "Смарт-карта для использования в приемнике зашифрованных вещательных сигналов и приемник" (номер дела поверенного PC/ASD/19708), "Система вещания и приема и система условного доступа для нее" (номер дела поверенного PC/ASD/19710), "Загрузка компьютерного файла из передатчика через приемник/декодер в компьютер" (номер дела поверенного PC/ASD/19711), "Трансляция и прием телевизионных программ и других данных" (номер дела поверенного PC/ASD/19712), "Загрузка данных" (номер дела поверенного PC/ASD/19713), "Организация памяти компьютера" (номер дела поверенного PC/ASD/19714), "Разработка системы управления телевидением и радио" (номер дела поверенного PC/ASD/19715), "Извлечение разделов данных из потока транслируемых данных" (номер дела поверенного PC/ASD/19716), "Система управления доступом" (номер дела поверенного PC/ASD/19717), "Система обработки данных" (номер дела поверенного PC/ASD/19718), "Система вещания и приема, а также приемник/декодер и удаленный контроллер для нее" (номер дела поверенного PC/ASD/19720). Раскрытие содержимого этих документов включено сюда посредством ссылок. Список заявок включает и предлагаемое изобретение.
Изобретение относится к созданию памяти в компьютере. Техническим результатом является расширение функциональных возможностей. Устройство содержит флэш-память, оперативную память, отдельную энергонезависимую память, средство для копирования страницы флэш-памяти в виде образа страницы в оперативную память и обновления этого образа страницы, средство для записи обновленного образа страницы назад во флэш-память на свободную страницу, средство для обновления главной таблицы записи в энергонезависимой памяти. Способ описывает работу данного устройства. 4 с. и 25 з.п.ф-лы, 10 ил.
Комментарии