RU2460222C2 - System and method of allocating memory in embedded systems or wireless communication systems - Google Patents

System and method of allocating memory in embedded systems or wireless communication systems Download PDF

Info

Publication number
RU2460222C2
RU2460222C2 RU2010144764/07A RU2010144764A RU2460222C2 RU 2460222 C2 RU2460222 C2 RU 2460222C2 RU 2010144764/07 A RU2010144764/07 A RU 2010144764/07A RU 2010144764 A RU2010144764 A RU 2010144764A RU 2460222 C2 RU2460222 C2 RU 2460222C2
Authority
RU
Russia
Prior art keywords
memory
payload
header
size
elements
Prior art date
Application number
RU2010144764/07A
Other languages
Russian (ru)
Other versions
RU2010144764A (en
Inventor
Шайлеш МАХЕШВАРИ (US)
Шайлеш МАХЕШВАРИ
Томас КЛИНГЕНБРУНН (US)
Томас КЛИНГЕНБРУНН
Ванитха А. КУМАР (US)
Ванитха А. КУМАР
Original Assignee
Квэлкомм Инкорпорейтед
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Квэлкомм Инкорпорейтед filed Critical Квэлкомм Инкорпорейтед
Publication of RU2010144764A publication Critical patent/RU2010144764A/en
Application granted granted Critical
Publication of RU2460222C2 publication Critical patent/RU2460222C2/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Telephone Function (AREA)
  • Transceivers (AREA)
  • Communication Control (AREA)

Abstract

FIELD: information technology.
SUBSTANCE: first memory elements are allocated. Each of the memory elements contains a first heading and a payload, wherein the payload contains independently allocated memory areas, and the first heading contains a link to unallocated memory in the payload. Second memory elements are then allocated. Each of the second memory elements contains a second heading. The second heading contains a link to an allocated memory area in the payload of the first memory element. Memory allocation requests are received and responded to by returning a link from the heading of the first or second memory element.
EFFECT: reduced overall memory capacity required by different subsystems in a mobile device, and fewer processing resources consumed by a mobile device.
26 cl, 7 dwg

Description

По настоящей заявке испрашивается приоритет предварительной патентной заявки США № 61/041878, поданной 2 апреля 2008 г.This application claims the priority of provisional patent application US No. 61/041878, filed April 2, 2008

Область техникиTechnical field

Настоящее изобретение, в целом, относится к области распределения памяти и, более конкретно, к распределению памяти во встроенных системах или системах беспроводной связи.The present invention generally relates to the field of memory allocation and, more particularly, to memory allocation in embedded or wireless communication systems.

Предшествующий уровень техникиState of the art

Служба распределения памяти использует пулы элементов памяти. В некоторых случаях элементы памяти сортируются по различным пулам, основываясь на размере элемента памяти. Например, один пул может состоять из множества малых элементов памяти, тогда как другой пул может состоять из относительно небольшого количества больших элементов памяти. В ответ на запросы распределения памяти соответствующий элемент данных может быть выбран из конкретного пула и возвращен запрашивающему объекту. Эта система приводит к существенной пустой трате ресурсов памяти и процессора. Например, при малых элементах памяти отношение заголовка к полезной нагрузке является высоким, что приводит в результате к неэффективному использованию памяти. Дополнительно, когда элементы всей памяти распределены, значительные фрагменты данных любого конкретного элемента данных могут оставаться неиспользованными. Кроме того, в этих службах распределения недоступно никакое статистическое мультиплексирование. Ресурсы процессора также расходуются из-за формирования цепочек из многочисленных малых элементов памяти.The memory allocation service uses storage pools. In some cases, memory elements are sorted into different pools based on the size of the memory element. For example, one pool may consist of many small memory elements, while another pool may consist of a relatively small number of large memory elements. In response to memory allocation requests, the corresponding data item may be selected from a particular pool and returned to the requesting entity. This system leads to a significant waste of memory and processor resources. For example, for small memory elements, the ratio of the header to the payload is high, resulting in inefficient use of memory. Additionally, when the elements of the entire memory are distributed, significant pieces of data of any particular data element may remain unused. In addition, no statistical multiplexing is available in these distribution services. Processor resources are also consumed due to the formation of chains of numerous small memory elements.

В системах беспроводной связи пакеты часто сегментируются на малые, с фиксированным размером, пакеты "радиолинии", например, 40 байтов, для обеспечения надежной радиопередачи. Для эффективного использования памяти один из подходов состоит в том, чтобы создать большой пул из относительно малых элементов памяти, каждый из которых хранит 40-байтовый блок, которые, в конечном счете, могут образовывать цепочку на более высоких уровнях для формирования больших блоков данных (например, 1500-байтовые IP-пакеты). Один из недостатков такой службы состоит в том, что некоторое пространство может быть потрачено впустую, потому что элементам памяти придется выравниваться по строкам кэша (32 или 64 байта), которые могут не соответствовать малому размеру пакета радиолинии. Кроме того, различные технологии могут совместно использовать один и тот же пул элементов памяти, чтобы уменьшить общий объем памяти, и в этом случае размер полезной нагрузки элемента памяти должен быть выбран так, чтобы соответствовать наибольшему размеру пакета радиолинии, что может дополнительно увеличивать потери производительности.In wireless communication systems, packets are often segmented into small, fixed-size “radio link” packets, such as 40 bytes, to provide reliable radio transmission. To use memory efficiently, one approach is to create a large pool of relatively small memory elements, each of which stores a 40-byte block, which ultimately can chain at higher levels to form large data blocks (e.g. , 1500 byte IP packets). One of the drawbacks of such a service is that some space may be wasted, because the memory elements will have to be aligned on cache lines (32 or 64 bytes), which may not correspond to the small packet size of the radio link. In addition, different technologies can share the same pool of memory elements in order to reduce the total memory capacity, in which case the size of the payload of the memory element must be chosen to match the largest packet size of the radio link, which can further increase performance loss.

КРАТКОЕ ИЗЛОЖЕНИЕ СУЩЕСТВА ИЗОБРЕТЕНИЯSUMMARY OF THE INVENTION

В одном из вариантов осуществления представлена система, обеспечивающая управление памятью. Система содержит процессор и службу управления памятью, которая выполняется на процессоре. Служба управления памятью сконфигурирована с возможностью создания первых элементов памяти, причем каждый из первых элементов памяти содержит заголовок и полезную нагрузку, причем полезная нагрузка сконфигурирована с возможностью сохранения множества независимо распределенных участков памяти, а заголовок первых элементов памяти ссылается на распределяемое пространство в полезной нагрузке, создания вторых элементов памяти, причем каждый из вторых элементов памяти содержит заголовок, ссылающийся на один или более участков памяти в полезной нагрузке первых элементов памяти, и возвращения ссылки из любого заголовка первого или второго элемента памяти, чувствительного к запросу распределения памяти.In one embodiment, a system is provided for providing memory management. The system includes a processor and a memory management service that runs on the processor. The memory management service is configured to create the first memory elements, each of the first memory elements containing a header and a payload, the payload configured to save a plurality of independently distributed memory sections, and the header of the first memory elements refers to the allocated space in the payload second memory elements, and each of the second memory elements contains a header that refers to one or more pieces of memory in Usable load first memory items, and return a reference from the header of any of the first or second memory item responsive to a memory allocation request.

В другом варианте осуществления представлен способ управления памятью. Способ содержит этапы, на которых распределяют первые элементы памяти, причем каждый из первых элементов памяти содержит первый заголовок и полезную нагрузку, причем полезная нагрузка содержит участки независимо распределяемой памяти, а первый заголовок содержит ссылку на нераспределенную память в полезной нагрузке, распределяют вторые элементы памяти, причем каждый из вторых элементов памяти содержит второй заголовок, причем второй заголовок содержит ссылку на распределенный участок памяти в полезной нагрузке первого элемента памяти, принимают запросы для распределения памяти и отвечают на запросы для распределения памяти посредством возвращения ссылки из заголовка первого или второго элемента памяти.In another embodiment, a memory management method is provided. The method comprises the steps of distributing the first memory elements, each of the first memory elements containing a first header and a payload, the payload containing sections of independently allocated memory, and the first header containing a reference to unallocated memory in the payload, distributing the second memory elements, moreover, each of the second memory elements contains a second header, and the second header contains a link to a distributed portion of memory in the payload of the first memory element They receive requests for memory allocation and respond to requests for memory allocation by returning a link from the header of the first or second memory element.

В другом варианте осуществления представлена система управления памятью. Система содержит средство распределения первых элементов памяти, причем каждый из первых элементов памяти содержит первый заголовок и полезную нагрузку, причем полезная нагрузка содержит участки независимо распределяемой памяти, а первый заголовок содержит ссылку на нераспределенную память в полезной нагрузке, средство распределения вторых элементов памяти, причем каждый второй элемент памяти содержит второй заголовок, причем второй заголовок содержит ссылку на распределенный участок памяти в полезной нагрузке первого элемента памяти, средство приема запросов для распределения памяти и средство ответа на запросы для распределения памяти посредством возвращения ссылки из заголовка первого или второго элемента памяти.In another embodiment, a memory management system is provided. The system comprises means for distributing the first memory elements, each of the first memory elements containing a first header and a payload, the payload containing sections of independently allocated memory, and the first header containing a reference to unallocated memory in the payload, means for distributing the second memory elements, each the second memory element contains a second header, and the second header contains a link to a distributed portion of memory in the payload of the first element Yachi, means for receiving requests for memory allocation, and means for responding to requests for memory allocation by returning a reference from the header of a first or second memory item.

В другом варианте осуществления предложен машиночитаемый носитель, закодированный компьютерными командами. Команда, при ее выполнении, обеспечивает осуществление процессором этапов, на которых распределяют первые элементы памяти, причем каждый из первых элементов памяти содержит первый заголовок и полезную нагрузку, причем полезная нагрузка содержит участки независимо распределяемой памяти, а первый заголовок содержит ссылку на нераспределенную память в полезной нагрузке, распределяют вторые элементы памяти, причем каждый второй элемент памяти содержит второй заголовок, причем второй заголовок содержит ссылку на распределенный участок памяти в полезной нагрузке первого элемента памяти, принимают запросы для распределения памяти и отвечают на запросы для распределения памяти посредством возвращения ссылки из заголовка первого или второго элемента памяти.In another embodiment, a computer readable medium encoded by computer instructions is provided. The command, when executed, ensures that the processor performs the stages in which the first memory elements are allocated, each of the first memory elements containing the first header and the payload, the payload containing sections of the independently allocated memory, and the first header containing a reference to unallocated memory in the useful the load, distribute the second memory elements, and each second memory element contains a second header, and the second header contains a link to a distributed portion of The memories in the payload of the first memory element receive requests for memory allocation and respond to requests for memory allocation by returning a link from the header of the first or second memory element.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS

В дальнейшем изобретение поясняется описанием предпочтительных вариантов воплощения со ссылками на сопроводительные чертежи, на которых:The invention is further explained in the description of the preferred embodiments with reference to the accompanying drawings, in which:

фиг.1 изображает структурную схему примера мобильного устройства;figure 1 depicts a block diagram of an example of a mobile device;

фиг.2 изображает структурную схему примера элементов памяти;figure 2 depicts a block diagram of an example of memory elements;

фиг.3 изображает структурную схему другого примера элементов памяти;figure 3 depicts a block diagram of another example of memory elements;

фиг.4A и 4B изображают блок-схему примера способа распределения памяти;4A and 4B are a flowchart of an example memory allocation method;

фиг.5 изображает блок-схему последовательности операций различных примеров выполнения службы распределения памяти;5 is a flowchart of various examples of a memory allocation service;

фиг.6 изображает блок-схему последовательности операций другого примера способа распределения памяти.6 is a flowchart of another example of a memory allocation method.

ОПИСАНИЕ ПРЕДПОЧТИТЕЛЬНЫХ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯDESCRIPTION OF THE PREFERRED EMBODIMENTS OF THE INVENTION

Последующее подробное описание направлено на конкретные варианты осуществления изобретения. Изобретение, однако, может быть осуществлено множеством различных путей. Должно быть очевидным, что приведенные здесь аспекты могут осуществляться в широком разнообразии форм, и что любая конкретная структура, функция или и то, и другое, раскрытые здесь, являются просто примерами воплощения. На основе представленных здесь результатов специалист в данной области техники должен понимать, что любой раскрытый здесь аспект может быть осуществлен независимо от любых других аспектов, и что два или более этих аспектов могут объединяться различными способами. Например, устройство может быть осуществлено или способ может быть реализован, используя любое количество аспектов, изложенных здесь. Кроме того, такое устройство может быть осуществлено или такой способ может быть реализован, используя другую структуру, функциональные возможности, или структуру и функциональные возможности в дополнение к одному или более чем к одному аспектам, изложенным здесь.The following detailed description is directed to specific embodiments of the invention. The invention, however, can be practiced in many different ways. It should be obvious that the aspects set forth herein can be implemented in a wide variety of forms, and that any particular structure, function, or both, disclosed herein are merely exemplary embodiments. Based on the results presented herein, one of skill in the art should understand that any aspect disclosed herein may be practiced independently of any other aspects, and that two or more of these aspects may be combined in various ways. For example, a device may be implemented or a method may be implemented using any number of aspects set forth herein. In addition, such a device may be implemented or such a method may be implemented using a different structure, functionality, or structure and functionality in addition to one or more of the one aspects set forth herein.

Мобильные устройства для работы обычно используют службы распределения памяти. Здесь описываются способы и устройства для уменьшения общего объема памяти, требующегося различным подсистемам в мобильном устройстве, и уменьшения ресурсов для обработки, расходуемых мобильным устройством. Ниже представлены некоторые архитектуры, которые могут использоваться вместе с описанными способами и устройствами.Mobile devices typically use memory allocation services to operate. Methods and devices are described herein to reduce the total amount of memory required by various subsystems in a mobile device and to reduce the processing resources consumed by the mobile device. Below are some architectures that can be used in conjunction with the described methods and devices.

На фиг.1 представлена структурная схема примера мобильного устройства 102. Устройство 102 содержит процессор 202, осуществляющий связь с запоминающим устройством 204, и сетевой интерфейс 206 для связи через беспроводную линию 106. Как вариант, устройство 102 может также включать в себя одно или более устройств 210 отображения, устройство 212 ввода пользователя, такое как клавиатура, сенсорный экран или другое подходящее тактильное устройство ввода данных, громкоговоритель 214, содержащий преобразователь, выполненный с возможностью обеспечения акустического выхода, основываясь на сигнале, принятом по беспроводной линии 106, и/или микрофон 216, содержащий преобразователь, выполненный с возможностью обеспечения ввода акустического сигнала, который может быть передан по беспроводной линии 106. Например, телефон может включать в себя устройство 210 отображения, выполненное с возможностью обеспечения визуального выхода графического интерфейса пользователя (GUI).1 is a block diagram of an example of a mobile device 102. The device 102 includes a processor 202 that communicates with a storage device 204, and a network interface 206 for communicating via a wireless line 106. Alternatively, the device 102 may also include one or more devices 210, a user input device 212, such as a keyboard, touch screen, or other suitable tactile data input device, a speaker 214, comprising a transducer configured to provide acoustic an output, based on a signal received on the wireless line 106, and / or a microphone 216, comprising a transducer configured to provide an acoustic signal that can be transmitted on the wireless line 106. For example, a telephone may include a display device 210, configured to provide visual output for a graphical user interface (GUI).

Сетевой интерфейс 206 может включать в себя любую подходящую антенну (не показана), приемник 220 и передатчик 222 так, чтобы устройство 102, как пример, могло связываться с одним или более устройствами по беспроводной линии 106. Как вариант, сетевой интерфейс 206 может также иметь возможности обработки для снижения требований к обработке для процессора 202.Network interface 206 may include any suitable antenna (not shown), receiver 220, and transmitter 222 so that device 102, as an example, can communicate with one or more devices over a wireless line 106. Alternatively, network interface 206 can also have processing capabilities to reduce processing requirements for the processor 202.

Как вариант, устройство 102 может включать в себя второй сетевой интерфейс 208, который осуществляет связь по сети 110 через линию 108. Например, устройство 102 может обеспечивать возможность связи с другой сетью 110 (например, глобальной сетью, такой как Интернет) через проводную или беспроводную линию связи. Соответственно, устройство 102 может дать возможность другим устройствам 102 (например, станции Wi-Fi) получать доступ к другой сети 110. Кроме того, следует понимать, что одно или более устройств 102 может быть портативным или, в некоторых случаях, относительно непортативным. Второй сетевой интерфейс 208 может передавать и принимать радиочастотные сигналы в соответствии со стандартом IEEE 802.11, включающим в себя IEEE 802.11(a), (b) или (g), стандартом BLUETOOTH и/или CDMA, GSM, AMPS, или другие известные сигналы, которые используются для связи внутри беспроводной сотовой телефонной сети. Кроме того, второй сетевой интерфейс 208 может содержать любой подходящий проводной сетевой интерфейс, такой как Ethernet (IEEE 802.3), USB или MDDI.Alternatively, device 102 may include a second network interface 208 that communicates over network 110 via line 108. For example, device 102 can communicate with another network 110 (eg, a wide area network such as the Internet) via wired or wireless communication line. Accordingly, device 102 may enable other devices 102 (eg, Wi-Fi stations) to access another network 110. In addition, it should be understood that one or more devices 102 may be portable or, in some cases, relatively non-portable. The second network interface 208 may transmit and receive radio frequency signals in accordance with the IEEE 802.11 standard, including IEEE 802.11 (a), (b) or (g), the BLUETOOTH standard and / or CDMA, GSM, AMPS, or other known signals, which are used for communication within a wireless cellular telephone network. In addition, the second network interface 208 may comprise any suitable wired network interface, such as Ethernet (IEEE 802.3), USB, or MDDI.

Устройство 102 может включать в себя батарею 231 для обеспечения электропитания одного или более компонентов устройства 102. Устройство 102 может содержать, по меньшей мере, одно из телефона, смартфона, персонального цифрового помощника (PDA), ультрамобильного персонального компьютера (UMPC), мобильного Интернет-устройства (MID) или любого другого мобильного устройства. В частности, содержащиеся здесь результаты могут быть использованы (например, осуществлены в рамках или выполнены) во множестве устройств 102.The device 102 may include a battery 231 for providing power to one or more components of the device 102. The device 102 may include at least one of a telephone, a smartphone, a personal digital assistant (PDA), an ultra-mobile personal computer (UMPC), a mobile Internet device (MID) or any other mobile device. In particular, the results contained herein can be used (for example, implemented within or implemented) in a variety of devices 102.

Описанные здесь компоненты могут осуществляться различными способами. Со ссылкой на фиг.1, устройство или оборудование 102 представляется как последовательность взаимодействующих функциональных блоков, которые могут представлять функции, осуществляемые, например, процессором 202, программным обеспечением, некоторой их комбинацией или некоторым другим способом, как описано здесь. Например, процессор 202 может облегчить пользователю ввод через устройства 212 ввода данных. Дополнительно, передатчик 222 может содержать процессор для передачи, обеспечивающий различные функциональные возможности, относящиеся к передаче информации на другое устройство 102. Приемник 220 может содержать процессор для приема, который обеспечивает различные функциональные возможности, относящиеся к приему информации от другого устройства 102, как описано здесь.The components described herein can be implemented in various ways. With reference to FIG. 1, a device or equipment 102 is represented as a series of interacting functional blocks that can represent functions performed, for example, by processor 202, software, some combination thereof, or some other method, as described herein. For example, processor 202 may facilitate user input through data input devices 212. Additionally, the transmitter 222 may include a processor for transmitting, providing various functionalities related to transmitting information to another device 102. Receiver 220 may include a processor for receiving, which provides various functionalities related to receiving information from another device 102, as described herein .

Процессор 202 также осуществляет связь со службой 203 распределения памяти. В одном варианте осуществления служба 203 распределения памяти работает на процессоре 202. Служба 203 распределения памяти отвечает на запросы памяти от одной или более подсистем, работающих в устройстве 102. Способ и порядок работы службы 203 распределения памяти будут описаны более подробно здесь ниже.The processor 202 also communicates with the memory allocation service 203. In one embodiment, the memory allocation service 203 runs on a processor 202. The memory allocation service 203 responds to memory requests from one or more subsystems operating in the device 102. The method and operation of the memory allocation service 203 will be described in more detail here below.

Как отмечено выше, на фиг.1 показано, что в некоторых аспектах эти компоненты могут быть осуществлены через соответствующие компоненты процессора. Эти компоненты процессора могут быть осуществлены в некоторых аспектах, используя, по меньшей мере, частично, описанную здесь структуру. В некоторых аспектах процессор может быть выполнен с возможностью осуществления части или всех функциональных возможностей одного или более этих компонентов. В некоторых аспектах один или более компонентов, представленных пунктирными прямоугольниками, являются необязательными.As noted above, FIG. 1 shows that in some aspects, these components can be implemented through respective processor components. These processor components may be implemented in some aspects using, at least in part, the structure described herein. In some aspects, the processor may be configured to implement part or all of the functionality of one or more of these components. In some aspects, one or more components represented by dashed rectangles are optional.

В одном или более примерах вариантов осуществления описанные функции могут быть осуществлены аппаратным обеспечением, программным обеспечением, встроенным программным обеспечением или любой их комбинацией. При осуществлении с помощью программного обеспечения функции могут быть сохранены или передаваться посредством одной или более команд или кода на машиночитаемом носителе данных. Машиночитаемый носитель включает в себя как компьютерный носитель данных, так и среду передачи, включающую в себя любую среду передачи, облегчающую передачу компьютерной программы из одного места в другое. Носители данных могут быть любыми доступными носителями, к которым может получать доступ универсальный или специализированный компьютер. Для примера, но не для ограничения, такие машиночитаемые носители могут содержать оперативное запоминающее устройство (RAM), постоянное запоминающее устройство (ROM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), компакт-диск CD-ROM или другой оптический дисковый накопитель, магнитный дисковый накопитель или другие магнитные запоминающие устройства или любой другой носитель, который может использоваться для переноса или хранения желаемого средства управляющих программ в форме команд или структур данных, и к которым может быть получен доступ посредством универсального или специализированного компьютера или универсального или специализированного процессора. Кроме того, любое соединение должным образом упоминается как машиночитаемая среда. Например, если программное обеспечение передается с веб-сайта, сервера или другого удаленного источника, использующего коаксиальный кабель, оптоволоконный кабель, витую пару, цифровую абонентскую линию (DSL) или беспроводные технологии, такие как инфракрасное излучение, радиоволны и микроволновое излучение, то коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасное излучение, радиоволны и микроволновое излучение, содержатся в определении среды. Магнитные и немагнитные диски, используемые здесь, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискету и диск по технологии Blu-ray, где магнитные диски обычно воспроизводят данные магнитным способом, тогда как немагнитные диски воспроизводят данные оптически с помощью лазеров. Комбинации вышеуказанных дисков также должны входить в число машиночитаемых носителей.In one or more exemplary embodiments, the functions described may be performed by hardware, software, firmware, or any combination thereof. When implemented using software, the functions may be stored or transmitted by one or more instructions or code on a computer-readable storage medium. A computer-readable medium includes both a computer storage medium and a transmission medium including any transmission medium that facilitates transfer of a computer program from one place to another. Storage media can be any available media that can be accessed by a general purpose or specialized computer. By way of example, but not limitation, such computer-readable media may include random access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), a CD-ROM or other optical magnetic disk drive a disk drive or other magnetic storage devices or any other medium that can be used to transfer or store the desired means of control programs in the form of instructions or data structures, which can be accessed by a general purpose or special purpose computer or a purpose or special purpose processor. In addition, any connection is duly referred to as a computer-readable medium. For example, if software is being transferred from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair cable, digital subscriber line (DSL), or wireless technologies such as infrared, radio waves, and microwave, then the coaxial cable , fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio waves, and microwave are contained in the definition of the medium. The magnetic and non-magnetic discs used here include a compact disc (CD), a laser disc, an optical disc, a digital versatile disc (DVD), a floppy disk and a Blu-ray disc, where magnetic discs usually reproduce data in a magnetic manner, then how non-magnetic disks reproduce data optically with lasers. Combinations of the above discs should also be among the computer-readable media.

В соответствии с одним аспектом службы распределения памяти, малые блоки памяти упакованы в большие блоки фиксированного размера (называемые "элементы DSM"). Для каждого из малых блоков поддерживается слежение за использованием элементов "DUP" (дубликат), которое показывает полезную нагрузку внутри DSM. Поскольку элементы DSM имеют ограниченный размер и все блоки внутри DSM, как можно предположить, имеют примерно одинаковый ограниченный срок службы, нет необходимости проводить фрагментацию свободной памяти внутри каждого DSM. Преимущество этого заключается в том, что использование памяти может быть значительно уменьшено, так как только небольшая часть памяти внутри DSM тратится впустую, но при некоторой доле сложности других способов распределения памяти с высокой эффективностью упаковки. Другой способ представления состоит в том, что это гибрид служб распределения с фиксированным размером и гибким размером, где общая память распределяется по блокам фиксированного размера, но в пределах блоков допускаются распределения с гибкими размерами, потому что гибкие распределения, как ожидается, будут иметь короткий срок службы.In accordance with one aspect of a memory allocation service, small memory blocks are packaged in large fixed-size blocks (called "DSM elements"). For each of the small blocks, tracking of the use of "DUP" elements (duplicate) is supported, which shows the payload inside the DSM. Since DSM elements are limited in size and all blocks within DSM can be assumed to have approximately the same limited life, there is no need to fragment free memory within each DSM. The advantage of this is that memory usage can be significantly reduced, since only a small fraction of the memory inside the DSM is wasted, but with some complexity, other memory allocation methods with high packing efficiency. Another way of presenting is that it is a hybrid of fixed-size and flexible-sized distribution services where shared memory is allocated to fixed-size blocks, but flexible-sized allocations are allowed within the blocks, because flexible allocations are expected to have a short term service.

В одном аспекте основной блок памяти называют элементом DSM. В нем содержится раздел заголовка и раздел полезной нагрузки. Когда блок данных должен быть сохранен в памяти, выделяется новый элемент DSM, и данные копируются в раздел полезной нагрузки DSM. Дополнительно, заголовки обновляются, чтобы отразить начало и длину данных. Если длина данных превышает размер раздела полезной нагрузки, многочисленные элементы DSM могут соединяться вместе в цепочку в связанный список.In one aspect, the main memory unit is called a DSM element. It contains a header section and a payload section. When a data block is to be stored in memory, a new DSM element is allocated and the data is copied to the DSM payload section. Additionally, headers are updated to reflect the start and length of the data. If the data length exceeds the size of the payload partition, multiple DSM elements can be chained together in a linked list.

Дополнительно определяется специальный тип элемента DSM, обозначенный как DUP ("дубликат"). DUP использует ту же самую структуру заголовка, что и обычный DSM, но он не имеет собственного раздела полезной нагрузки. Вместо этого он может указать на раздел данных в другом месте, например, внутри обычного DSM. Чтобы проследить, сколько DUP указывают на данные в одном и том же элементе DSM, существует поле заголовка, обозначенное "ref_count", которое отсчитывает количество ссылок на этот элемент DSM, и в котором устанавливается единица, когда первоначальный DSM распределяется впервые. Каждый раз, когда создается новый DUP, это указывается внутри элемента DSM и значение "ref_count" увеличивается. Аналогично, когда DUP освобождается, значение "ref count" первоначального элемента DSM уменьшается. Таким способом алгоритм распределения может знать, когда элемент DSM может быть фактически свободен, что происходит только тогда, когда никакие другие DUP не указывают на раздел полезной нагрузки этого пакета, что происходит, когда значение "ref_count" возвращается обратно на ноль.Additionally, a special type of DSM element is identified, designated as DUP ("duplicate"). DUP uses the same header structure as regular DSM, but it does not have its own payload partition. Instead, it can point to a data section elsewhere, for example, inside a regular DSM. To track how many DUPs point to data in the same DSM element, there is a header field labeled "ref_count" that counts the number of references to that DSM element, and which sets the unit when the initial DSM is allocated for the first time. Each time a new DUP is created, this is indicated inside the DSM element and the value of "ref_count" is incremented. Similarly, when the DUP is freed, the "ref count" of the original DSM is reduced. In this way, the distribution algorithm can know when the DSM element can be virtually free, which happens only when no other DUPs point to the payload section of this packet, which happens when the value of "ref_count" returns to zero.

DUP могут использоваться для разбивки пакетов, реорганизации данных, удаления заголовков и т.д., без необходимости затрагивания первоначальных данных. Все это может быть достигнуто просто манипуляцией заголовками DSM и DUP.DUPs can be used to break packages, reorganize data, delete headers, etc., without having to affect the original data. All of this can be achieved simply by manipulating the DSM and DUP headers.

В соответствии с другим аспектом способы, позволяющие упаковывать данные в один и тот же элемент DSM для улучшения эффективности памяти, могут быть направлены на некоторые из недостатков, отмеченных ранее. В соответствии с этим аспектом определяется пул больших элементов DSM. Большой размер DSM должен позволить соединить в один и тот же элемент DSM данные множества пакетов радиолинии.In another aspect, methods for packing data into the same DSM to improve memory performance may address some of the drawbacks noted previously. In accordance with this aspect, a large DSM element pool is defined. The large DSM size should allow the data of multiple radio link packets to be combined into the same DSM element.

На фиг.2 представлена структурная схема, показывающая элементы памяти службы распределения памяти. Служба распределения памяти может включать в себя и программный интерфейс приложения ("API"). Этот API может быть доступным для доступа подсистемам, таким как подсистемы, присутствующие в устройстве 102 API. Эта служба распределения памяти может выполняться полностью или частично процессором 202 или другим подобным устройством обработки. Дополнительно, API может формировать часть операционной системы для мобильного или беспроводного устройства, такого как устройство 102. Альтернативно, API может формировать часть программной библиотеки. На фиг.2 показан первый тип элемента 610 памяти. Этот первый тип элемента 610 памяти может упоминаться как элемент управления передачей данных ("DSM"). Альтернативно, он может упоминаться как контейнерный элемент. Эти элементы 610 памяти контейнерного типа организуются как пул 605 элементов памяти. Хотя на фигуре показан единый пул 605, следует понимать, что могут также использоваться многочисленные пулы элементов DSM. Каждый пул может характеризоваться одной или более общей характеристикой, такой как размер элемента или подсистема, обслуживаемая пулом.2 is a block diagram showing memory elements of a memory allocation service. The memory allocation service may include an application program interface (“API”). This API may be accessible to subsystems, such as the subsystems present in the API device 102. This memory allocation service may be performed in whole or in part by processor 202 or other similar processing device. Additionally, the API may form part of the operating system for a mobile or wireless device, such as device 102. Alternatively, the API may form part of a software library. 2 shows a first type of memory element 610. This first type of memory element 610 may be referred to as a data transfer control ("DSM"). Alternatively, it may be referred to as a container element. These container-type memory elements 610 are organized as a pool of memory elements 605. Although a single pool 605 is shown in the figure, it should be understood that multiple DSM element pools may also be used. Each pool can be characterized by one or more common characteristics, such as the size of the element or subsystem serviced by the pool.

На фиг.2 также представлен увеличенный вид элемента 610 памяти. Как видно на увеличенном виде, эти элементы 610 контейнерного типа содержат многочисленные разделы. Первый раздел элемента памяти может упоминаться как заголовок 615. Заголовок 615 может содержать информацию, относящуюся к остальным частям элемента 610 памяти, а также другую информацию. Второй раздел элемента 610 памяти может упоминаться как полезная нагрузка. Сама полезная нагрузка может иметь несколько распределенных частей или блоков памяти 620. Кроме того, полезная нагрузка может иметь нераспределенное или неиспользуемое пространство 625. В одном варианте осуществления полезная нагрузка содержит приблизительно 1500 байтов, размер, приблизительно необходимый для сохранения IP-пакета.Figure 2 also presents an enlarged view of the element 610 memory. As seen in an enlarged view, these container-type elements 610 contain numerous sections. The first section of the memory element may be referred to as the header 615. The header 615 may contain information related to the remaining parts of the memory element 610, as well as other information. The second section of memory element 610 may be referred to as a payload. The payload itself may have several distributed parts or memory blocks 620. In addition, the payload may have unallocated or unused space 625. In one embodiment, the payload contains approximately 1,500 bytes, a size approximately necessary to store an IP packet.

Заголовок 615 элемента 610 памяти может содержать такую информацию, как ссылка на нераспределенное пространство 625 в элементе 610 памяти. В одном примере эта ссылка принимает форму указателя, указывающего начальный адрес нераспределенного пространства 625 в элементе 610 памяти. Эта ссылка на нераспределенную память 625 в элементе 610 данных может также упоминаться как "data_ptr". Заголовок может также содержать поле, указывающее размер распределенной памяти 620. Это количество распределенного пространства может упоминаться как "используемое" пространство в полезной нагрузке. Заголовок может также содержать поле, указывающее идентификатор, который идентифицирует пул 605 памяти, связанный с элементом 610 памяти. Этот идентификатор может упоминаться как "pool_id". Заголовок может также содержать поле, указывающее количество ссылок на элемент 610 памяти. Например, как описано ниже, на элемент 610 памяти могут ссылаться другие элементы памяти. Например, на каждый из распределенных участков 610 памяти полезной нагрузки ссылается разный элемент памяти. Дополнительно, заголовок 615 элемента 610 памяти ссылается на нераспределенную часть 625 полезной нагрузки. Счет этих ссылок может использоваться, помимо прочего, для цели определения, когда элемент 610 памяти может быть освобожден и возвращен пулу 605, чтобы впоследствии быть перераспределенным. Этот счет ссылок может упоминаться как "ссылки". Заголовок 615 может также содержать одну или более ссылок на другие элементы памяти. Например, если запрашиваемый участок памяти является слишком большим, чтобы соответствовать одиночному элементу 610 памяти, ссылки в заголовке могут использоваться, чтобы указать один или более дополнительных элементов памяти, которые могут соединяться вместе цепочкой, чтобы удовлетворить запрос. В зависимости от типа элементов памяти, на которые делается ссылка, эти ссылки могут упоминаться как "pkt_ptr" или "dup_ptr". Например, pkt_ptr может сослаться на ноль или больше элементов DSM или контейнерных элементов, в то время как dup_ptr может ссылаться на ноль или больше элементов DUP. В дополнение к идентифицированным полям заголовок 615 может содержать дополнительные поля, такие как поле, определяемое пользователем, или поля, используемые для целей тестирования. Кроме того, заголовок 615 может пропускать одно или более идентифицированных полей.The header 615 of the memory element 610 may contain information such as a reference to the unallocated space 625 in the memory element 610. In one example, this link takes the form of a pointer indicating the starting address of the unallocated space 625 in memory element 610. This reference to unallocated memory 625 in data element 610 may also be referred to as "data_ptr". The header may also contain a field indicating the size of the distributed memory 620. This amount of distributed space may be referred to as “used” space in the payload. The header may also contain a field indicating an identifier that identifies the memory pool 605 associated with the memory element 610. This identifier may be referred to as "pool_id". The header may also contain a field indicating the number of links to memory element 610. For example, as described below, other memory elements may refer to memory element 610. For example, a different memory element refers to each of the distributed sections 610 of the payload memory. Additionally, the header 615 of the memory element 610 refers to the unallocated portion 625 of the payload. The count of these links can be used, inter alia, for the purpose of determining when the memory element 610 can be freed and returned to the pool 605 to be subsequently redistributed. This reference count may be referred to as “links”. Header 615 may also contain one or more references to other memory elements. For example, if the requested memory location is too large to correspond to a single memory element 610, links in the header can be used to indicate one or more additional memory elements that can be chained together to satisfy the request. Depending on the type of referenced memory items, these links may be referred to as "pkt_ptr" or "dup_ptr". For example, pkt_ptr may refer to zero or more DSM elements or container elements, while dup_ptr may refer to zero or more DUP elements. In addition to the identified fields, header 615 may include additional fields, such as a user-defined field or fields used for testing purposes. In addition, header 615 may skip one or more identified fields.

На фиг.2 также показан второй тип элемента 630 памяти. Этот второй тип элемента памяти может упоминаться как дубликат или элемент памяти "DUP". Эти элементы 630 DUP содержат заголовок, подобный заголовку 615 элементов 610 контейнерной памяти. Например, элементы DUP могут иметь те же самые поля, что и заголовок элемента 615 DSM. Альтернативно, элементы DUP могут иметь больше или меньше полей. Однако эти элементы DUP не имеют своей собственной полезной нагрузки. Скорее, заголовки 630 элементов DUP содержат ссылки на контейнерные элементы памяти. В одном конкретном примере элемент 630 DUP содержит указатель, указывающий первый блок распределения памяти в распределенной части 620 элемента 610 памяти. Эти элементы 630 DUP могут также быть выполнены в одном или более пулов 640. Подобно пулам 605 контейнерных элементов могут использоваться многочисленные пулы элемента DUP. Например, на фиг.2 показаны два пула 640 и 650 элементов DUP. В одном примере каждая подсистема во встроенном устройстве или в устройстве беспроводной связи имеет свой собственный пул элементов DUP. В этом варианте осуществления пул 640 может соответствовать одной конкретной подсистеме, тогда как пул 650 может соответствовать другой подсистеме. Как видно на фиг.2, один вариант осуществления обеспечивает, что элементы DUP от отдельных пулов могут ссылаться на блоки 620 памяти в едином элементе 610 DSM.2 also shows a second type of memory element 630. This second type of memory element may be referred to as a duplicate or “DUP” memory element. These DUP elements 630 contain a header similar to the header 615 of the container memory elements 610. For example, DUP elements may have the same fields as the title of the 615 DSM element. Alternatively, DUP elements may have more or less fields. However, these DUP elements do not have their own payload. Rather, the headers 630 of the DUP elements contain references to container memory elements. In one specific example, the DUP element 630 comprises a pointer indicating a first memory allocation unit in the distributed portion 620 of the memory element 610. These DUP elements 630 may also be implemented in one or more pools 640. Like multiple pools of container elements 605, multiple DUP element pools may be used. For example, FIG. 2 shows two pools 640 and 650 of DUP elements. In one example, each subsystem in an embedded device or in a wireless device has its own DUP element pool. In this embodiment, pool 640 may correspond to one particular subsystem, while pool 650 may correspond to another subsystem. As can be seen in FIG. 2, one embodiment ensures that DUP elements from individual pools can refer to memory units 620 in a single DSM element 610.

На фиг.3 показан альтернативный вариант осуществления элементов памяти, показанных на фиг.2. Как прежде может использоваться единый пул элементов 715 DSM. Однако, на этот раз, каждый пул элементов 730 и 735 DUP, соответственно, ссылается на распределенные части разных элементов 725 и 720 DSM. Как описано выше, элементы DSM могут возвращаться в пул 715 DSM для перераспределения, как только все ссылки в полезной нагрузке будут освобождены. Однако когда многочисленным подсистемам разрешается иметь ссылки DUP в одном и том же элементе DSM, может происходить фрагментация. Например, вся память, распределенная первой подсистеме в конкретном DSM, уже могла быть освобождена. Однако если на малый блок все еще делается ссылка посредством DUP от другой подсистемы, остающаяся память в полезной нагрузке может ожидать освобождения до тех пор, пока вторая подсистема не освободит свой малый блок памяти. Чтобы минимизировать эту проблему, каждая подсистема может иметь свои собственные ссылки DUP в своем собственном DMS. Таким путем, сроки службы распределенных частей памяти в конкретном DSM, вероятнее всего, будут одинаковыми. Схожесть сроков службы будет приводить к уменьшению фрагментации.Figure 3 shows an alternative embodiment of the memory elements shown in figure 2. As before, a single pool of 715 DSM elements can be used. However, this time, each pool of DUP elements 730 and 735, respectively, refers to the distributed parts of different DSM elements 725 and 720. As described above, DSM elements can be returned to the DSM pool 715 for redistribution as soon as all links in the payload are released. However, when multiple subsystems are allowed to have DUP links in the same DSM element, fragmentation can occur. For example, all the memory allocated to the first subsystem in a particular DSM could already be freed. However, if a small block is still referenced by a DUP from another subsystem, the remaining memory in the payload may wait until it is freed until the second subsystem releases its small memory block. To minimize this problem, each subsystem can have its own DUP links in its own DMS. In this way, the lifetimes of the distributed parts of the memory in a particular DSM are likely to be the same. The similarity of service life will lead to a decrease in fragmentation.

На фиг.4A и 4B показан вариант осуществления способа 780 распределения памяти. Этот способ 780 может выполняться как служба, работающая на процессоре, таком как процессор 202. Способ 780 облегчает прием запросов распределения памяти и возвращение ссылок на распределенную память. Как описано ниже, конкретная назначенная ссылка может быть функцией текущей ситуации распределения памяти для запроса подсистемы и размера запрашиваемого блока памяти. Дополнительно следует заметить, что некоторые из этапов могут быть опущены, чтобы удовлетворить требования или специальные требования конкретного приложения. Дополнительно следует отметить, что некоторые из описанных здесь этапов являются оптимизациями и, таким образом, могут выборочно использоваться или быть опущены по усмотрению разработчика системы.4A and 4B show an embodiment of a method 780 for allocating memory. This method 780 can be performed as a service running on a processor, such as processor 202. Method 780 facilitates receiving memory allocation requests and returning references to distributed memory. As described below, a specific assigned link may be a function of the current memory allocation situation to query the subsystem and the size of the requested memory block. Additionally, it should be noted that some of the steps may be omitted to satisfy the requirements or special requirements of a particular application. Additionally, it should be noted that some of the steps described here are optimizations and, thus, can be selectively used or omitted at the discretion of the system developer.

Способ 780 начинается, когда служба распределения памяти на этапе 785 получает запрос памяти. Как часть запроса памяти запрашивающая подсистема может указать запрашиваемый размер памяти. Запрашивающая подсистема может также предоставить идентификатор подсистемы так, чтобы служба распределения памяти могла выбрать соответствующий элемент DSM для этой подсистемы. После приема запроса памяти служба распределения памяти определяет, является ли запрашиваемый размер меньше размера нераспределенной памяти в текущем контейнерном элементе DSM, как показано на этапе 790 принятия решения. Как обсуждалось со ссылкой на фиг.2 и 3, элементы DSM могут иметь нераспределенное пространство в разделе полезной нагрузки. Этап 790 принятия решения может быть выполнен посредством сравнения размера нераспределенной части с запрашиваемым размером. Альтернативно, так как общий размер полезной нагрузки известен, запрашиваемый объем может сравниваться с размером распределенной части полезной нагрузки. В другом варианте осуществления, вместо использования для сравнения запрашиваемого размера памяти, система распределения памяти может увеличить размер запроса так, чтобы увеличенный запрос был выровнен с границами кэша. Например, фактический запрос может быть увеличен так, чтобы получающийся в результате запрос был кратным конкретному размеру строки кэша, такому как 16, 32, 64 или 128 байт. Независимо от этого, если запрашиваемый размер памяти или ее увеличенная выровненная версия вписывается в нераспределенную часть, способ переходит к этапу 800.Method 780 begins when the memory allocation service in step 785 receives a memory request. As part of a memory request, the requesting subsystem may indicate the requested memory size. The requesting subsystem may also provide a subsystem identifier so that the memory allocation service can select the appropriate DSM element for that subsystem. After receiving the memory request, the memory allocation service determines whether the requested size is less than the size of the unallocated memory in the current DSM container element, as shown in decision block 790. As discussed with reference to FIGS. 2 and 3, DSM elements may have unallocated space in the payload section. Step 790 decision can be performed by comparing the size of the unallocated part with the requested size. Alternatively, since the total payload size is known, the requested volume can be compared with the size of the distributed portion of the payload. In another embodiment, instead of using the requested memory size for comparison, the memory allocation system may increase the size of the request so that the enlarged request is aligned with the cache boundaries. For example, the actual request may be increased so that the resulting request is a multiple of a particular cache line size, such as 16, 32, 64, or 128 bytes. Regardless, if the requested memory size or its enlarged aligned version fits into the unallocated part, the method proceeds to step 800.

На этапе 800 принятия решения система распределения памяти определяет, превышает ли запрашиваемый размер плюс размер ранее распределенной части текущего элемента DSM первый порог. Например, если полезная нагрузка DSM составляет приблизительно 1500 байтов длины, порог может составить 1200 байтов. Соответственно, система распределения памяти должна определить, превышает ли размер уже распределенной памяти плюс размер запрашиваемой памяти 1200-байтовый предел. В одном варианте осуществления порог может быть выбран как определенный процент от размера полезной нагрузки элемента DSM. Например, порог может составить приблизительно 70%-80% размера полезной нагрузки. В другом варианте осуществления размер порога может быть выбран, чтобы отразить характеристики размера общего запроса, такие как запросы памяти для хранения IP-пакетов. В другом варианте осуществления вместо того, чтобы сравнивать размер распределенной памяти с порогом, с порогом может сравниваться размер остающейся нераспределенной памяти. В этом варианте осуществления служба должна вычислить часть полезной нагрузки, которая может оставаться нераспределенной, если был распределен запрашиваемый или отрегулированный размер памяти. Сравнение остающейся нераспределенной памяти с этим порогом может затем использоваться способом, подобным ранее обсуждавшемуся сравнению распределенной памяти с порогом.At decision block 800, the memory allocation system determines whether the requested size plus the size of the previously allocated portion of the current DSM is larger than the first threshold. For example, if the DSM payload is approximately 1,500 bytes in length, the threshold may be 1,200 bytes. Accordingly, the memory allocation system must determine whether the size of the memory already allocated plus the size of the requested memory exceeds the 1200-byte limit. In one embodiment, the threshold may be selected as a certain percentage of the payload size of the DSM element. For example, the threshold may be approximately 70% -80% of the size of the payload. In another embodiment, a threshold size may be selected to reflect general request size characteristics, such as memory requests for storing IP packets. In another embodiment, instead of comparing the size of the distributed memory with a threshold, the size of the remaining unallocated memory can be compared with the threshold. In this embodiment, the service must calculate the portion of the payload that may remain unallocated if the requested or adjusted memory size has been allocated. Comparison of the remaining unallocated memory with this threshold can then be used in a manner similar to the previously discussed comparison of distributed memory with a threshold.

Выполняя этап 800 принятия решения, если идентифицированная сумма больше, чем порог, способ переходит к этапу 805. При переходе к этапу 805 система распределения памяти возвращает ссылку запрашивающей подсистеме. В одном варианте осуществления возвращенной ссылкой является data_ptr из заголовка текущего элемента DSM. Предпочтительно, возвращая ссылку из заголовка элемента DSM, система распределения памяти сохраняет служебные данные и ресурсы, вовлеченные в создание элемента DUP и возвращение ссылки из заголовка DUP. Дополнительно, распределение остатка полезной нагрузки DSM, а не только запрашиваемого размера, позволяет службе распределения памяти избегать малых блоков данных в конце полезных нагрузок, которые, в противном случае, могут, если используются, привести к организации цепочки.In decision block 800, if the identified amount is greater than the threshold, the method proceeds to block 805. When proceeding to block 805, the memory allocation system returns a link to the requesting subsystem. In one embodiment, the returned link is data_ptr from the header of the current DSM element. Preferably, by returning the link from the DSM element header, the memory allocation system stores the overhead and resources involved in creating the DUP element and returning the link from the DUP header. Additionally, the distribution of the remainder of the DSM payload, not just the requested size, allows the memory allocation service to avoid small blocks of data at the end of the payloads, which, if not, could lead to chaining.

Возвращаясь к этапу 800 принятия решения, если запрашиваемый размер памяти плюс уже распределенный размер памяти не больше порога, способ переходит к этапу 810. На этапе 810 служба распределения памяти создает элемент DUP, распределяет запрашиваемую память и возвращает ссылку в DUP к запрашивающей подсистеме. Предпочтительно, посредством многочисленных итераций этот способ позволяет службе распределения памяти упаковывать многочисленные распределения в единый элемент DSM. Эта упаковка позволяет эффективно использовать ресурсы памяти и обеспечивает выигрыш как в использовании памяти, так и в использовании обработки.Returning to decision block 800 if the requested memory size plus the already allocated memory size is not more than a threshold, the method proceeds to block 810. At block 810, the memory allocation service creates a DUP element, allocates the requested memory and returns a link in the DUP to the requesting subsystem. Preferably, through multiple iterations, this method allows the memory allocation service to pack multiple allocations into a single DSM element. This packaging allows efficient use of memory resources and provides a gain in both memory usage and processing utilization.

Возвращаясь к этапу 790, если запрашиваемый размер памяти больше, чем нераспределенное пространство в текущем элементе DSM, способ переходит к этапу 845 принятия решения на фиг.4B. На этапе 845 принятия решения служба распределения памяти определяет, превышает ли запрашиваемый размер второй порог. Этот второй порог, как и первый, может быть установлен как фиксированное количество байтов. Например, если размер полезной нагрузки элемента DSM составляет 1600 байтов, второй порог может составлять 1200 байтов. Альтернативно, второй порог может быть также определен как процент от размера полезной нагрузки. Например, второй порог может составлять 65%-75% от размера полезной нагрузки. В другом варианте осуществления порог может определяться динамически. Например, порог может быть установлен равным общему объему распределенной памяти в элементе DSM. В этом варианте осуществления запрашиваемый размер может превысить порог, когда запрашиваемый размер превышает распределенное пространство в DSM. Независимо от того, как определен порог, если запрашиваемый размер больше, чем этот порог, служба распределения памяти распределяет новый элемент DSM и возвращает data_ptr из нового заголовка элемента DSM в запрашивающую подсистему, как показано на этапе 850. Подобно этапу 805 этот процесс возвращения ссылки из заголовка нового элемента DSM сохраняет служебные данные для создания нового элемента DUP. Запрашивающей подсистеме дается больше, чем она попросила, целиком элемент DSM, и это распределение позволяет удовлетворять последующие запросы распределения с помощью нераспределенной памяти, остающейся в текущем элементе DSM.Returning to step 790, if the requested memory size is larger than the unallocated space in the current DSM, the method proceeds to decision block 845 in FIG. 4B. At decision block 845, the memory allocation service determines whether the requested size exceeds the second threshold. This second threshold, like the first, can be set as a fixed number of bytes. For example, if the payload size of a DSM element is 1600 bytes, the second threshold may be 1200 bytes. Alternatively, a second threshold may also be defined as a percentage of the size of the payload. For example, the second threshold may be 65% -75% of the size of the payload. In another embodiment, the threshold may be determined dynamically. For example, the threshold may be set equal to the total amount of distributed memory in the DSM element. In this embodiment, the requested size may exceed a threshold when the requested size exceeds the allocated space in the DSM. Regardless of how the threshold is determined, if the requested size is larger than this threshold, the memory allocation service allocates a new DSM element and returns data_ptr from the new DSM element header to the requesting subsystem, as shown in block 850. Like in block 805, this process returns a link from The header of the new DSM element saves overhead for creating a new DUP element. The requesting subsystem is given more than what it asked for, the whole DSM element, and this allocation allows the subsequent allocation requests to be satisfied with the unallocated memory remaining in the current DSM element.

Возвращаясь к этапу 845, если запрашиваемый размер меньше этого второго порога, способ переходит к этапу 855. На этапе 855 удаляется ссылка заголовка элемента DSM на нераспределенную часть полезной нагрузки DSM. В действительности это освобождает остаток элемента DSM. Кроме того, создается новый элемент DSM. Блок памяти распределяется в новом элементе DSM, и создается соответствующий DUP. Ссылка в новом DUP на новый элемент DSM затем возвращается в запрашивающую подсистему.Returning to step 845, if the requested size is less than this second threshold, the method proceeds to step 855. At step 855, the DSM element header link is removed to the unallocated portion of the DSM payload. This actually frees up the rest of the DSM element. In addition, a new DSM item is created. The memory block is allocated in the new DSM element, and the corresponding DUP is created. The link in the new DUP to the new DSM is then returned to the requesting subsystem.

Для цели объяснения на фиг.5 показаны примеры приведенного выше способа. В случае 1 показан текущий элемент 910 DSM. Текущий DSM имеет как распределенную часть 915, так и нераспределенную часть 920. Запрашиваемый размер 925 пакета показан как первый порог 930. Как видно на фигуре, размер распределенной части 915 плюс размер запрашиваемой части 925 меньше первого порога 930. Соответственно, как показано, участок элемента 935 DSM распределен и создан новый элемент DUP, и его ссылка возвращается запрашивающей подсистеме. Новый элемент DUP включает в себя ссылку на DSM 935, которая указывает начало вновь распределенных данных.For the purpose of explanation, FIG. 5 shows examples of the above method. In case 1, the current DSM element 910 is shown. The current DSM has both distributed part 915 and unallocated part 920. The requested packet size 925 is shown as the first threshold 930. As can be seen in the figure, the size of the distributed part 915 plus the size of the requested part 925 is smaller than the first threshold 930. Accordingly, as shown, the element portion 935 DSM is distributed and a new DUP is created, and its link is returned to the requesting subsystem. The new DUP element includes a link to the DSM 935, which indicates the start of newly distributed data.

В случае 2 текущий DSM 955 показан совместно с другим запрашиваемым пакетом 960. Как показано на фигуре, размер распределенной части DSM 955 плюс размер запрашиваемого пакета превышает первый порог, однако сумма не превышает общую длину полезной нагрузки. Соответственно, ссылка на нераспределенную часть элемента 965 DSM возвращается запрашивающей подсистеме. Результат состоит в том, что в дополнение к получению запрашиваемого размера памяти или даже немного большего отрегулированного распределения строк запрашивающая подсистема получит все остающееся нераспределенное пространство 980 в DSM 965. Опять же, возвращение ссылки из заголовка элемента DSM сохраняет служебную команду на создание DUP и исключает образование цепочек, потенциально образуемых заглушкой 980, которая, в противном случае, могла бы быть оставлена.In case 2, the current DSM 955 is shown together with another requested packet 960. As shown in the figure, the size of the distributed portion of the DSM 955 plus the size of the requested packet exceeds the first threshold, but the sum does not exceed the total payload length. Accordingly, a reference to the unallocated portion of the DSM element 965 is returned to the requesting subsystem. The result is that in addition to obtaining the requested memory size or even a slightly larger adjusted row allocation, the requesting subsystem will receive all the remaining unallocated space 980 in the DSM 965. Again, returning the link from the DSM element header saves the service command to create the DUP and eliminates the formation chains potentially formed by stub 980, which otherwise could have been left.

В случае 3 текущий DSM 985 показан с другим запрашиваемым блоком 990 памяти. Как показано на фигуре, запрашиваемый пакет является слишком большим, чтобы разместиться в нераспределенной части текущего DSM. Кроме того, запрашиваемый размер меньше, чем второй порог 995. Соответственно, ссылка в заголовке текущего DSM 1000 на нераспределенные части полезной нагрузки удаляется. Создается новый DSM 1005. Блок памяти из этого DSM распределяется, и создается новый элемент DUP, ссылающийся на распределенный блок в новом DSM. Ссылка из этого нового элемента DUP затем возвращается запрашивающей подсистеме. Опять же, следует понимать, что хотя второй порог 995 показан как статический, порог может быть определен динамически, например, устанавливая его равным размеру распределенной памяти в оригинале.In case 3, the current DSM 985 is shown with another requested memory unit 990. As shown in the figure, the requested packet is too large to fit in the unallocated portion of the current DSM. In addition, the requested size is smaller than the second threshold 995. Accordingly, the link in the header of the current DSM 1000 to unallocated parts of the payload is deleted. A new DSM 1005 is created. The memory block from this DSM is allocated, and a new DUP element is created that refers to the distributed block in the new DSM. The link from this new DUP element is then returned to the requesting subsystem. Again, it should be understood that although the second threshold 995 is shown as static, the threshold can be determined dynamically, for example, setting it equal to the size of the distributed memory in the original.

В случае 4 DSM 1010 показан вместе с запрашиваемым блоком 1015 памяти. Как и в случае 3, запрашиваемый размер слишком большой, чтобы поместиться в нераспределенной части элемента 1010 DSM. Кроме того, запрашиваемый размер 1015 блока больше второго порога 995. В результате, текущий DSM 1020 сохраняется в своем текущем состоянии. Между тем, создается новый DSM 1025, и ссылка на нераспределенную часть полезной нагрузки в новом заголовке DSM возвращается.In case 4, the DSM 1010 is shown along with the requested memory unit 1015. As in case 3, the requested size is too large to fit in the unallocated portion of the DSM element 1010. In addition, the requested block size 1015 is larger than the second threshold 995. As a result, the current DSM 1020 is stored in its current state. Meanwhile, a new DSM 1025 is created, and the link to the unallocated portion of the payload in the new DSM header is returned.

Способ, показанный на фиг.6, подобен способу, показанному на фиг.4A и 4B. Однако на фиг.6 предлагаются изменения в отношении определенных параметров, используемых в варианте осуществления услуги для распределения памяти. Способ 1080, показанный на фиг.6, обеспечивает API для запросов распределения памяти. В одном конкретном варианте осуществления способ 1080 обеспечивает запрос функции для подсистем, которая может использоваться для запроса распределения памяти. Как показано на фигуре, функция может принимать в качестве параметра запрашиваемый размер распределения памяти. Кроме того, функция может принимать другие параметры, такие как идентификатор подсистемы, который идентифицирует запрашивающую подсистему. Служба, представленная в соответствии с фиг.6, может быть сконфигурирована с возможностью ее выполнения на процессоре, таком как процессор 202 устройства 102. В ответ на запросы распределения служба, как обсуждается ниже, готовит указатель на распределенный блок памяти с размером, большим или равным запрашиваемому размеру. Соответственно, подсистемы, которые используют служебный API, возвращают указатель в распределенную память. В одном конкретном варианте осуществления способ, показанный на фиг.6, во время своей работы использует некоторые или все следующие значения:The method shown in FIG. 6 is similar to the method shown in FIGS. 4A and 4B. However, FIG. 6 proposes changes with respect to certain parameters used in an embodiment of a service for allocating memory. The method 1080 shown in FIG. 6 provides an API for memory allocation requests. In one particular embodiment, method 1080 provides a function request for subsystems that can be used to request memory allocation. As shown in the figure, the function may take as a parameter the requested size of the memory allocation. In addition, the function may take other parameters, such as a subsystem identifier that identifies the requesting subsystem. The service presented in accordance with FIG. 6 can be configured to be executed on a processor, such as processor 202 of device 102. In response to distribution requests, the service, as discussed below, prepares a pointer to a distributed memory block with a size greater than or equal to requested size. Accordingly, subsystems that use the service API return a pointer to distributed memory. In one specific embodiment, the method shown in FIG. 6 uses some or all of the following values during its operation:

current_dsm_item_ptr []: это набор указателей на текущий элемент DSM для каждой подсистемы.current_dsm_item_ptr []: this is a set of pointers to the current DSM element for each subsystem.

aligned_pkt_size: это размер запрашиваемого блока памяти, отрегулированный, чтобы быть выровненным со строками кэша таких размеров, как 16, 32, 64 или 128.aligned_pkt_size: this is the size of the requested memory block, adjusted to be aligned with cache lines of sizes such as 16, 32, 64, or 128.

pkt_ptr: указатель на распределенную память, которую собираются возвратить.pkt_ptr: pointer to the distributed memory that is about to be returned.

DSMI_MEM_THRESHOLD_TO_FREE_DSM: первый порог для того, чтобы определить, должна ли быть возвращена ссылка DUP или DSM. Если после распределения блока памяти остающаяся нераспределенная память должна быть меньше этого порога, ссылка DSM возвращается, эффективно распределяя всю остающуюся нераспределенную память в элементе DSM.DSMI_MEM_THRESHOLD_TO_FREE_DSM: The first threshold to determine if a DUP or DSM link should be returned. If, after allocating the memory block, the remaining unallocated memory should be less than this threshold, the DSM link is returned, effectively allocating all the remaining unallocated memory in the DSM element.

DSMI_THRESHOLD_FOR_COMPLETE_ITEM_ALLOCATION: второй порог для определения, должны ли ссылки DUP или DSM быть возвращены. Если запрашиваемый размер пакета больше этого порога, создается новый элемент DSM, и возвращается ссылка из заголовка нового DSM. Текущий DSM сохраняется.DSMI_THRESHOLD_FOR_COMPLETE_ITEM_ALLOCATION: second threshold for determining whether DUP or DSM links should be returned. If the requested packet size is greater than this threshold, a new DSM is created and a link is returned from the header of the new DSM. The current DSM is saved.

Способ, показанный на фиг.6, начинается с запроса функции, показанного на этапе 1085. В качестве параметра запроса служба распределения принимает запрашиваемый размер пакета "pkt_size". Кроме того, в некоторых вариантах осуществления в запросе функции также должен передаваться другой параметр, идентификатор подсистемы. Переходя к этапу 1100, способ блокирует конкретный пул элементов DSM, чтобы избежать проблем одновременного доступа. После блокировки пула способ переходит к этапу 1105 принятия решения. На этапе 1105 принятия решения служба определяет, является ли pkt_ptr нулевым. Если по запросу никакая память не была распределена, указатель может быть нулевым. Однако если указатель имеет ненулевое значение, служба переходит к разблокированию пула на этапе 1140 и возвращает указатель на этап 1145. Однако если указатель нулевой, служба переходит к этапу 1110 принятия решения.The method shown in FIG. 6 starts with a function request shown in step 1085. As a request parameter, the distribution service accepts the requested packet size “pkt_size”. In addition, in some embodiments, another parameter, a subsystem identifier, must also be passed in the function request. Going to step 1100, the method blocks a specific pool of DSM elements to avoid concurrent access problems. After the pool is locked, the method proceeds to decision block 1105. At decision block 1105, the service determines whether pkt_ptr is null. If no memory was allocated on request, the pointer may be null. However, if the pointer has a non-zero value, the service proceeds to unlock the pool at step 1140 and returns the pointer to step 1145. However, if the pointer is zero, the service proceeds to decision block 1110.

Продолжая на этапе 1110 принятия решения, служба определяет, является ли current_dsm_item_ptr нулевым. Если предыдущие итерации не привели в результате ни к какому текущему существующему элементу DSM, на этапе 1115 служба переходит к его созданию и прекращает его создание, если оно терпит неудачу на этапах 1120, 1140, 1145. Как только для действительного текущего DSM подтверждается существование или создание, способ переходит к этапу 1125 принятия решения. На этапе 1125 принятия решения служба определяет, меньше ли выровненный запрашиваемый размер, чем размер нераспределенного пространства в текущем DSM. Если это так, на этапе 1130 служба затем определяет, меньше ли нераспределенное пространство, которое должно остаться после распределения запрашиваемой памяти в DSM, чем первый порог. Если это так, служба на этапе 1135 создает DUP и распределяет выровненную запрашиваемую память в текущем DSM, разблокирует пул на этапе 1140 и возвращает указатель DUP на этапе 1145. В противном случае служба на этапе 1150 создает полностью новый DSM, на этапе 1140 разблокирует пул и на этапе 1145 возвращает указатель из заголовка нового DSM.Continuing to decision block 1110, the service determines whether current_dsm_item_ptr is zero. If the previous iterations did not result in any current existing DSM element, at 1115 the service proceeds to create it and stops creating it if it fails at 1120, 1140, 1145. As soon as the existence or creation is confirmed for the actual current DSM , the method proceeds to decision block 1125. At decision block 1125, the service determines whether the aligned requested size is less than the unallocated space size in the current DSM. If so, at 1130, the service then determines whether the unallocated space that should remain after allocating the requested memory in the DSM is smaller than the first threshold. If so, the service creates a DUP in step 1135 and allocates the aligned requested memory in the current DSM, unlocks the pool in step 1140, and returns the DUP pointer in step 1145. Otherwise, the service creates a completely new DSM in step 1150, unlocks the pool in step 1140, and at 1145, returns a pointer from the header of the new DSM.

Возвращаясь к этапу 1125, если запрашиваемый размер больше, чем остающееся нераспределенное пространство, способ переходит к этапу 1155 принятия решения. На этапе 1155 служба определяет, больше ли запрашиваемый размер второго порога или равен ему. Если это так, служба создает полностью новый DSM 1165, разблокирует пул 1140 и возвращает указатель из заголовка нового DSM 1145. В противном случае служба освобождает остающуюся память в текущем DSM и снова переходит к запуску способа на этапе 1105. Результат состоит в том, что создан новый DSM и создан DUP, ссылающийся на тело нового DSM, и указатель DUP возвращен запрашивающей подсистеме.Returning to step 1125, if the requested size is larger than the remaining unallocated space, the method proceeds to decision block 1155. At step 1155, the service determines whether the requested size of the second threshold is greater than or equal to it. If so, the service creates an entirely new DSM 1165, unlocks pool 1140, and returns the pointer from the header of the new DSM 1145. Otherwise, the service frees up the remaining memory in the current DSM and proceeds to run the method again at step 1105. The result is that created a new DSM and a DUP is created that references the body of the new DSM, and the DUP pointer is returned to the requesting subsystem.

Здесь также представлены дополнительные признаки и варианты осуществления настоящей службы распределения памяти.Additional features and embodiments of the present memory allocation service are also provided.

Многочисленные указатели DSM для различных пользователейNumerous DSM Pointers for Various Users

Для использования в случаях, в которых срок службы блоков, как ожидается, будет существенно различен для различных пользователей, алгоритм может поддерживать многочисленные указатели DSM и упаковать в одном и том же DSM только блоки данных со схожими сроками жизни. Например, конкретный идентификатор пользователя может быть передан вместе с запросом распределения, так что только данные от этого пользователя будут упаковываться в одном и том же элементе DSM. Запросы других пользователей должны упаковываться в другие DSM. Здесь "пользователем" может быть набор задач или подзадач, или уровней, или функций, или любая другая их комбинация, чтобы отличать один набор профиля пользователя от другого.For use in cases in which the service life of the blocks is expected to be significantly different for different users, the algorithm can support multiple DSM pointers and pack data blocks with similar lifetimes in the same DSM. For example, a specific user identifier may be transmitted along with a distribution request, so that only data from that user will be packaged in the same DSM element. Requests from other users must be packaged in other DSMs. Here, the “user” can be a set of tasks or subtasks, or levels, or functions, or any other combination of them, to distinguish one set of user profile from another.

Поддержка добавления данных спереди (или сзади) DSMSupport for adding data in front (or back) of DSM

Для эффективного добавления данных спереди существующего элемента DSM или DUP (то есть добавление заголовков протокола), без распределения нового элемента DSM и выполнения соединения цепочек, предложено обеспечивать распределение DSM со свободным пространством спереди. За свободным пространством поддерживается слежение с помощью заголовка "offset". Таким способом DUP или DSM могут распределяться с заданным смещением и позже, если перед DSM необходимо вставить больше данных, это может быть сделано без нового распределения DSM, сопровождаемого образованием цепочек. Подобная служба может обеспечиваться для добавления данных и в конце DSM.To effectively add data in front of an existing DSM or DUP element (that is, add protocol headers) without distributing a new DSM element and performing chaining, it is proposed to provide DSM distribution with free space in front. Free space is supported by tracking using the "offset" header. In this way, a DUP or DSM can be distributed at a given offset and later, if more data needs to be inserted before the DSM, this can be done without a new DSM distribution, followed by chaining. A similar service may be provided to add data at the end of the DSM.

Многочисленные пулыNumerous pools

Служба позволяет многочисленным пулам DSM обеспечивать резервирование заданного числа элементов определенному пользователю. Это путь, при котором пользователь не должен будет волноваться, что внезапно больше не окажется никаких свободных элементов DSM, потому что всех их распределил другой пользователь. Кроме того, это обеспечивает лучшую способность отладки при проблемах переполнения памяти (когда один пользователь не принимает во внимание границы распределения), потому что проблема ограничивается только объемом кодового алфавита этого пользователя.The service allows multiple DSM pools to reserve a given number of items to a specific user. This is the way in which the user does not have to worry that suddenly there will be no free DSM elements anymore, because all of them were distributed by another user. In addition, this provides better debugging capabilities for memory overflow problems (when one user does not take into account the distribution boundaries), because the problem is limited only by the size of the user's code alphabet.

Служба квоты как альтернатива многочисленным пуламQuota service as an alternative to multiple pools

Другой способ достигнуть того же самого состоит в том, чтобы иметь один пул, но каждый пользователь имеет максимальную квоту элементов DSM (байты), которые он может распределить. Как только он достиг своей квоты, он должен освободить некоторые элементы, чтобы распределить новые элементы во избежание недостатка памяти у других пользователей. Одно из преимуществ, которое этот подход имеет перед подходом с многочисленными пулами, заключается в том, что может быть достигнуто совместное использование. Например, если существуют 4 пользователя с их собственным пулом из X элементов, это должно потребовать 4X элементов памяти. Однако так как очень маловероятно, что все 4 пользователя будут распределять все элементы в одно и то же время, служба квот может позволить уменьшить общую память, скажем, до 3X, предполагая, что если один пользователь берет всю свою память, равную X, 3 остальных пользователя смогут иметь возможность совместно использовать остающуюся память, равную 2X.Another way to achieve the same is to have one pool, but each user has a maximum quota of DSM elements (bytes) that he can allocate. Once it has reached its quota, it must free some items in order to distribute new items in order to avoid the lack of memory for other users. One of the advantages this approach has over the multiple pool approach is that sharing can be achieved. For example, if there are 4 users with their own pool of X elements, this would require 4X memory elements. However, since it is very unlikely that all 4 users will distribute all the items at the same time, the quota service may allow reducing the total memory, say, to 3X, assuming that if one user takes all his memory equal to X, the remaining 3 users will be able to share the remaining memory equal to 2X.

Многочисленные указатели DSM для различных размеровNumerous DSM pointers for various sizes

В этом аспекте распределение DSM может быть разделено, основываясь на запрашиваемом пространстве памяти (в отличие от использования описанного выше идентификатора подсистемы). Вместо использования традиционного пути пулов многочисленных размеров, совместно используемых через многочисленные уровни/подсистемы, чтобы удовлетворить потребности всех задач/профилей, с помощью этого предложения возможно обеспечить поддержку многочисленных указателей DSM, из которых только блоки определенного размера могут быть распределены для каждого указателя DSM. Например, мы можем иметь указатель DSM для размеров блоков 128, 256, 512, 768, 1024, 1536 байтов и так далее.In this aspect, the DSM distribution may be partitioned based on the requested memory space (as opposed to using the subsystem identifier described above). Instead of using the traditional pool path of multiple sizes, shared across multiple levels / subsystems to meet the needs of all tasks / profiles, this proposal can provide support for multiple DSM pointers, of which only blocks of a certain size can be allocated for each DSM pointer. For example, we can have a DSM pointer for block sizes of 128, 256, 512, 768, 1024, 1536 bytes, and so on.

Всякий раз при любых запросах уровня/модулей для определенного размера памяти алгоритм может определить наиболее подходящий указатель DSM и обеспечить дубликат, если запрашиваемый размер доступен. Если запрашиваемый размер недоступен, тогда освобождают указатель DSM (если он не нулевой) для этого размера и распределяют большой элемент из глобального пула больших элементов (например, элементов, больших, чем заданное количество байтов, в одном примере, элементы, большие или равные 768 байтам), и затем DUP наилучшим образом подгоняет размер блока и возвращает DUP вызывающему абоненту.Whenever any level / module requests for a specific memory size, the algorithm can determine the most suitable DSM pointer and provide a duplicate if the requested size is available. If the requested size is not available, then release the DSM pointer (if it is not null) for that size and allocate a large element from the global pool of large elements (for example, elements larger than a given number of bytes, in one example, elements greater than or equal to 768 bytes ), and then the DUP will best fit the block size and return the DUP to the caller.

Настоящее распределение обладает также несколькими отличительными преимуществами по сравнению с предшествующим уровнем техники. Варианты осуществления настоящей службы уменьшают занимаемую площадь памяти. Использование меньшего количества пулов обеспечивает лучшее статистическое мультиплексирование. Служба обеспечивает лучшую эффективность упаковки. Для элементов DSM требуется меньше служебных команд, даже при добавлении служебных команд для DUP. Центральный процессор, обрабатывающий служебные команды (MIPS), уменьшается из-за меньшего количества цепочек. Служба разрешает использование больших элементов DSM, избегая длинных цепочек в пакете (особенно при больших размерах пакета), таким образом уменьшая количество операций распределения/освобождения DSM. Варианты осуществления упрощают техническое обслуживание, связанное с более традиционным подходом, вовлекающим многочисленные пулы памяти. Служба может осуществляться как имеющая центральный API для обработки, и это помогает избежать необходимости осуществлять такие функциональные возможности в каждой подсистеме, тем самым дублируя код. Необходимость в отдельных размерах пулов и размерах элементов для каждого целевого значения исключается. Без описанных здесь способов необходимо было бы осуществлять код отдельно во многих местах (например, различные или многочисленные уровни в стеке, такие как модуль пакетных служб (PS), высокоскоростной модуль USB (HS-USB) и т.д.), которые более склонны к ошибкам, и т.д. Возможно определить пул DUP в высокоскоростной памяти для дополнительного улучшения показателей (например, преимущества кэша), например определяя пул DUP в памяти с малой задержкой (например, внутренняя оперативная память (IRAM)). Уменьшенные проверки в DSM могут быть получены, если используется только один пул с этим программным интерфейсом приложения (API). В настоящее время DSM выполняет некоторые проверки, основанные на идентификаторе пула (идентификация), который передается в качестве параметра.The present distribution also has several distinctive advantages over the prior art. Embodiments of the present service reduce memory footprint. Using fewer pools provides better statistical multiplexing. The service provides the best packaging efficiency. DSM elements require less utility commands, even when adding utility commands for DUP. Service Processor Central Processing Unit (MIPS) is reduced due to fewer chains. The service permits the use of large DSM elements, avoiding long chains in a packet (especially with large packet sizes), thereby reducing the number of DSM distribution / release operations. Embodiments simplify maintenance associated with a more traditional approach involving multiple memory pools. The service can be implemented as having a central API for processing, and this helps to avoid the need to implement such functionality in each subsystem, thereby duplicating the code. The need for separate pool sizes and element sizes for each target value is eliminated. Without the methods described here, it would be necessary to execute the code separately in many places (for example, various or multiple levels on the stack, such as the packet service module (PS), high-speed USB module (HS-USB), etc.), which are more prone to errors, etc. It is possible to define a DUP pool in high-speed memory to further improve performance (for example, cache benefits), for example by defining a DUP pool in low-latency memory (for example, internal random access memory (IRAM)). Reduced checks in DSM can be obtained if only one pool is used with this application programming interface (API). DSM currently performs some checks based on the pool identifier (identification), which is passed as a parameter.

Claims (26)

1. Система управления памятью, содержащая:
процессор и
службу управления памятью, выполняемую на процессоре, причем служба управления памятью сконфигурирована с возможностью:
создания первых элементов памяти, причем каждый из первых элементов памяти содержит заголовок и полезную нагрузку, причем полезная нагрузка сконфигурирована с возможностью хранения множества независимо распределенных участков памяти, а заголовок первых элементов памяти ссылается на распределяемое пространство в полезной нагрузке;
создания вторых элементов памяти, причем каждый из вторых элементов памяти содержит заголовок, ссылающийся на один или более участков памяти в полезной нагрузке первых элементов памяти; и
возвращения ссылки из любого заголовка первого или второго элемента памяти, чувствительного к запросу распределения памяти.
1. A memory management system comprising:
processor and
a memory management service running on the processor, the memory management service configured to:
creating the first memory elements, each of the first memory elements containing a header and a payload, with the payload configured to store a plurality of independently distributed portions of memory, and the header of the first memory elements refers to the allocated space in the payload;
creating second memory elements, each of the second memory elements containing a header that refers to one or more sections of memory in the payload of the first memory elements; and
returning a link from any header of the first or second memory element sensitive to the memory allocation request.
2. Система управления памятью по п.1, в которой заголовок первых элементов памяти ведет счет ссылок на первые элементы памяти.2. The memory management system according to claim 1, in which the header of the first memory elements keeps track of links to the first memory elements. 3. Система управления памятью по п.1, в которой служба управления памятью дополнительно сконфигурирована с возможностью создания отдельных первых элементов памяти для каждой из множества подсистем.3. The memory management system according to claim 1, wherein the memory management service is further configured to create separate first memory elements for each of the plurality of subsystems. 4. Система управления памятью по п.1, в которой запрос распределения памяти содержит запрашиваемый размер памяти.4. The memory management system according to claim 1, in which the memory allocation request contains the requested memory size. 5. Система управления памятью по п.4, в которой служба управления памятью дополнительно сконфигурирована с возможностью определения суммы размера распределенной памяти в полезной нагрузке конкретного первого элемента памяти и запрашиваемого размера памяти и сравнения суммы с пороговым значением.5. The memory management system according to claim 4, in which the memory management service is further configured to determine the sum of the size of the distributed memory in the payload of a particular first memory element and the requested memory size and comparing the amount with a threshold value. 6. Система управления памятью по п.5, в которой служба управления памятью дополнительно сконфигурирована с возможностью создания и возвращения ссылки из заголовка конкретного второго элемента памяти, когда сумма меньше порогового значения.6. The memory management system according to claim 5, in which the memory management service is further configured to create and return links from the header of a specific second memory element when the sum is less than a threshold value. 7. Система управления памятью по п.6, в которой служба управления памятью дополнительно сконфигурирована с возможностью возвращения ссылки из заголовка конкретного первого элемента памяти, когда сумма больше порогового значения.7. The memory management system according to claim 6, in which the memory management service is further configured to return a link from the header of a particular first memory element when the sum is greater than a threshold value. 8. Система управления памятью по п.4, в которой служба управления памятью дополнительно сконфигурирована с возможностью определения суммы размера распределенной памяти в полезной нагрузке конкретного первого элемента памяти и запрашиваемого размера памяти, сравнения суммы с размером полезной нагрузки конкретного первого элемента памяти и сравнения запрашиваемого размера памяти с пороговым значением.8. The memory management system according to claim 4, in which the memory management service is further configured to determine the sum of the size of the distributed memory in the payload of a particular first memory element and the requested memory size, comparing the amount with the payload size of a specific first memory element and comparing the requested size memory with a threshold value. 9. Система управления памятью по п.8, в которой служба управления памятью дополнительно сконфигурирована с возможностью создания другого конкретного первого элемента памяти, создания конкретного второго элемента памяти, ссылающегося на полезную нагрузку другого конкретного первого элемента памяти и возвращения ссылки из заголовка конкретного второго элемента памяти, когда сумма больше размера полезной нагрузки конкретного первого элемента памяти, и запрашиваемый размер памяти меньше порогового значения.9. The memory management system of claim 8, in which the memory management service is further configured to create another specific first memory element, create a specific second memory element that refers to the payload of another specific first memory element and return a link from the header of a specific second memory element when the sum is greater than the payload size of the particular first memory element, and the requested memory size is less than the threshold value. 10. Система управления памятью по п.8, в которой служба управления памятью дополнительно сконфигурирована с возможностью создания другого конкретного первого элемента памяти и возвращения ссылки из заголовка другого конкретного первого элемента памяти, когда сумма больше размера полезной нагрузки конкретного первого элемента памяти, и запрашиваемый размер памяти больше порогового значения.10. The memory management system of claim 8, in which the memory management service is further configured to create another specific first memory element and return a link from the header of another specific first memory element, when the sum is larger than the payload size of the specific first memory element, and the requested size memory is greater than the threshold value. 11. Система управления памятью по п.8, в которой пороговое значение является размером распределенной памяти в конкретном первом элементе памяти.11. The memory management system of claim 8, in which the threshold value is the size of the distributed memory in a particular first memory element. 12. Система управления памятью по п.4, в которой служба управления памятью дополнительно сконфигурирована с возможностью увеличения запрашиваемого размера памяти для выравнивания запрашиваемого размера памяти с границей строк кэша.12. The memory management system according to claim 4, in which the memory management service is further configured to increase the requested memory size to align the requested memory size with the cache line boundary. 13. Способ управления памятью, содержащий этапы, на которых:
распределяют первые элементы памяти, причем каждый из первых элементов памяти содержит первый заголовок и полезную нагрузку, причем полезная нагрузка содержит участки независимо распределяемой памяти, а первый заголовок содержит ссылку на нераспределенную память в полезной нагрузке;
распределяют вторые элементы памяти, причем каждый из вторых элементов памяти содержит второй заголовок, причем второй заголовок содержит ссылку на распределенный участок памяти в полезной нагрузке первого элемента памяти;
принимают запросы для распределения памяти; и
отвечают на запросы для распределения памяти, возвращая ссылку из заголовка первого или второго элемента памяти.
13. A method of managing memory, comprising stages in which:
distributing the first memory elements, each of the first memory elements containing a first header and a payload, the payload containing sections of independently allocated memory, and the first header containing a reference to unallocated memory in the payload;
distributing the second memory elements, with each of the second memory elements containing a second header, the second header containing a link to a distributed portion of memory in the payload of the first memory element;
accept requests for memory allocation; and
respond to memory allocation requests by returning a link from the header of the first or second memory element.
14. Способ по п.13, в котором первый заголовок дополнительно содержит отсчет ссылок в первых элементах памяти.14. The method according to item 13, in which the first header further comprises a reference count in the first memory elements. 15. Способ по п.13, в котором распределение первых элементов памяти дополнительно содержит распределение отдельных первых элементов памяти для каждой из множества подсистем.15. The method according to item 13, in which the distribution of the first memory elements further comprises the distribution of the individual first memory elements for each of the many subsystems. 16. Способ по п.13, в котором запрос распределения памяти содержит запрашиваемый размер памяти.16. The method of claim 13, wherein the memory allocation request comprises a requested memory size. 17. Способ по п.16, в котором дополнительно определяют суммы размера распределенной памяти в полезной нагрузке конкретного первого элемента памяти и запрашиваемого размера памяти и сравнивают суммы с пороговым значением.17. The method according to clause 16, in which additionally determine the sum of the size of the distributed memory in the payload of a particular first memory element and the requested memory size and compare the sum with a threshold value. 18. Способ по п.17, в котором дополнительно распределяют и возвращают ссылки из заголовка конкретного второго элемента памяти, когда сумма меньше порогового значения.18. The method according to 17, in which additionally distribute and return links from the header of a specific second memory element when the sum is less than a threshold value. 19. Способ по п.18, в котором дополнительно возвращают ссылки из заголовка конкретного первого элемента памяти, когда сумма больше порогового значения.19. The method according to p, in which additionally return links from the header of a particular first memory element when the sum is greater than a threshold value. 20. Способ по п.16, дополнительно содержащий этапы, на которых:
определяют сумму размера распределенной памяти в полезной нагрузке конкретного первого элемента памяти и запрашиваемого размера памяти;
сравнивают сумму с размером полезной нагрузки конкретного первого элемента памяти и
сравнивают запрашиваемый размер памяти с порогом.
20. The method according to clause 16, further comprising stages in which:
determining the sum of the size of the distributed memory in the payload of the particular first memory element and the requested memory size;
comparing the sum with the payload size of the particular first memory element and
compare the requested memory size with a threshold.
21. Способ по п.20, дополнительно содержащий этапы, на которых:
создают другой частный первый элемент памяти;
создают частный второй элемент памяти, ссылающийся на полезную нагрузку другого частного первого элемента памяти; и
возвращают ссылку из заголовка частного второго элемента памяти, когда сумма больше размера полезной нагрузки частного первого элемента памяти и запрашиваемый размер памяти меньше порога.
21. The method according to claim 20, further comprising stages in which:
create another private first memory element;
create a private second memory element that refers to the payload of another private first memory element; and
return a link from the header of the private second memory element when the sum is greater than the payload size of the private first memory element and the requested memory size is less than the threshold.
22. Способ по п.20, дополнительно содержащий этапы, на которых:
создают другой частный первый элемент памяти; и
возвращают ссылку из заголовка другого частного первого элемента памяти, когда сумма размера полезной нагрузки частного первого элемента памяти и запрашиваемого размера памяти больше порога.
22. The method according to claim 20, further comprising stages in which:
create another private first memory element; and
return a link from the header of another private first memory element when the sum of the payload size of the private first memory element and the requested memory size is greater than the threshold.
23. Способ по п.20, в котором порог равен размеру распределенной памяти в частном первом элементе памяти.23. The method according to claim 20, in which the threshold is equal to the size of the distributed memory in the private first memory element. 24. Способ по п.16, в котором дополнительно увеличивают запрашиваемый размер памяти для выравнивания запрашиваемого размера памяти с границей строк кэша.24. The method according to clause 16, in which the requested memory size is further increased to align the requested memory size with the cache line boundary. 25. Система управления памятью, содержащая:
средство распределения первых элементов памяти, причем каждый из первых элементов памяти содержит первый заголовок и полезную нагрузку, причем полезная нагрузка содержит участки независимо распределяемой памяти, а первый заголовок содержит ссылку на нераспределенную память в полезной нагрузке;
средство распределения вторых элементов памяти, причем каждый из вторых элементов памяти содержит второй заголовок, причем второй заголовок содержит ссылку на распределенный участок памяти в полезной нагрузке первого элемента памяти;
средство приема запросов распределения памяти и
средство ответа на запросы для распределения памяти посредством возвращения ссылки из заголовка первого или второго элемента памяти.
25. A memory management system comprising:
means for distributing the first memory elements, each of the first memory elements containing a first header and a payload, wherein the payload contains sections of independently allocated memory, and the first header contains a reference to unallocated memory in the payload;
means for distributing the second memory elements, each of the second memory elements containing a second header, the second header containing a link to a distributed portion of memory in the payload of the first memory element;
means for receiving memory allocation requests; and
query response means for allocating memory by returning a link from the header of the first or second memory element.
26. Машиночитаемый носитель данных, кодированный компьютерными командами, которые при их выполнении обеспечивают осуществление процессором этапов, на которых:
распределяют первые элементы памяти, причем каждый из первых элементов памяти содержит первый заголовок и полезную нагрузку, причем полезная нагрузка содержит участки независимо распределяемой памяти, а первый заголовок содержит ссылку на нераспределенную память в полезной нагрузке;
распределяют вторые элементы памяти, причем каждый из вторых элементов памяти содержит второй заголовок, причем второй заголовок содержит ссылку на распределенный участок памяти в полезной нагрузке первого элемента памяти;
принимают запросы для распределения памяти и
отвечают на запросы для распределения памяти посредством возвращения ссылки из заголовка первого или второго элемента памяти.
26. A computer-readable storage medium encoded by computer instructions that, when executed, ensure that the processor performs the steps in which:
distributing the first memory elements, each of the first memory elements containing a first header and a payload, the payload containing sections of independently allocated memory, and the first header containing a reference to unallocated memory in the payload;
distributing the second memory elements, with each of the second memory elements containing a second header, the second header containing a link to a distributed portion of memory in the payload of the first memory element;
accept requests for memory allocation and
respond to memory allocation requests by returning a link from the header of the first or second memory element.
RU2010144764/07A 2008-04-02 2009-04-02 System and method of allocating memory in embedded systems or wireless communication systems RU2460222C2 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US4187808P 2008-04-02 2008-04-02
US61/041,878 2008-04-02
US12/416,759 US8321651B2 (en) 2008-04-02 2009-04-01 System and method for memory allocation in embedded or wireless communication systems
US12/416,759 2009-04-01

Publications (2)

Publication Number Publication Date
RU2010144764A RU2010144764A (en) 2012-05-10
RU2460222C2 true RU2460222C2 (en) 2012-08-27

Family

ID=41134319

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2010144764/07A RU2460222C2 (en) 2008-04-02 2009-04-02 System and method of allocating memory in embedded systems or wireless communication systems

Country Status (11)

Country Link
US (1) US8321651B2 (en)
EP (1) EP2266265B1 (en)
JP (1) JP5265758B2 (en)
KR (1) KR101134195B1 (en)
CN (1) CN101971581B (en)
AT (1) ATE516647T1 (en)
CA (1) CA2718291A1 (en)
ES (1) ES2367605T3 (en)
RU (1) RU2460222C2 (en)
TW (1) TW201018142A (en)
WO (1) WO2009124164A1 (en)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100182970A1 (en) * 2009-01-21 2010-07-22 Qualcomm Incorporated Multiple Subscriptions Using a Single Air-Interface Resource
US8433880B2 (en) 2009-03-17 2013-04-30 Memoir Systems, Inc. System and method for storing data in a virtualized high speed memory system
US9442846B2 (en) 2009-03-17 2016-09-13 Cisco Technology, Inc. High speed memory systems and methods for designing hierarchical memory systems
US20110041128A1 (en) * 2009-08-13 2011-02-17 Mathias Kohlenz Apparatus and Method for Distributed Data Processing
US8762532B2 (en) * 2009-08-13 2014-06-24 Qualcomm Incorporated Apparatus and method for efficient memory allocation
US8788782B2 (en) * 2009-08-13 2014-07-22 Qualcomm Incorporated Apparatus and method for memory management and efficient data processing
US9038073B2 (en) * 2009-08-13 2015-05-19 Qualcomm Incorporated Data mover moving data to accelerator for processing and returning result data based on instruction received from a processor utilizing software and hardware interrupts
US8341368B2 (en) 2010-06-07 2012-12-25 International Business Machines Corporation Automatic reallocation of structured external storage structures
US8838910B2 (en) 2010-06-07 2014-09-16 International Business Machines Corporation Multi-part aggregated variable in structured external storage
US9351196B2 (en) * 2012-08-31 2016-05-24 International Business Machines Corporation Byte caching in wireless communication networks
KR102150262B1 (en) * 2013-09-25 2020-09-01 현대모비스 주식회사 Method for managing memory in vehicle information system
CN105573711B (en) 2014-10-14 2019-07-19 深圳市中兴微电子技术有限公司 A kind of data cache method and device
CN104572498B (en) * 2014-12-26 2018-04-27 曙光信息产业(北京)有限公司 The buffer memory management method and device of message
CN110245091B (en) * 2018-10-29 2022-08-26 浙江大华技术股份有限公司 Memory management method and device and computer storage medium
CN112860423A (en) * 2019-11-28 2021-05-28 深圳云天励飞技术有限公司 Video memory management method and related product
US11206222B2 (en) 2020-02-07 2021-12-21 Wipro Limited System and method of memory management in communication networks

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2037874C1 (en) * 1993-05-10 1995-06-19 Валерий Алексеевич Харитонов Device for control of memory unit
US5715430A (en) * 1994-04-26 1998-02-03 Kabushiki Kaisha Toshiba Multiprocessor computer system and a method for memory allocation to optimize cache coherency within the system
RU2006118342A (en) * 2004-09-29 2007-12-20 Сони Корпорейшн (JP) INFORMATION PROCESSING DEVICE, MEMORY AREA MANAGEMENT METHOD AND COMPUTER PROGRAM

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0574140A1 (en) * 1992-05-29 1993-12-15 Hewlett-Packard Company Network adapter which places a network header and data in separate memory buffers
JP3177047B2 (en) * 1993-01-27 2001-06-18 大日本印刷株式会社 Memory area management method
US7269171B2 (en) * 2002-09-24 2007-09-11 Sun Microsystems, Inc. Multi-data receive processing according to a data communication protocol
US7334123B2 (en) 2003-05-02 2008-02-19 Advanced Micro Devices, Inc. Computer system including a bus bridge for connection to a security services processor
JP2005100262A (en) * 2003-09-26 2005-04-14 Seiko Epson Corp Device, program and method for managing memory
US20050125550A1 (en) * 2003-12-09 2005-06-09 Bajikar Sundeep M. Location information via DHCP
US7930422B2 (en) * 2004-07-14 2011-04-19 International Business Machines Corporation Apparatus and method for supporting memory management in an offload of network protocol processing
US7940764B2 (en) * 2004-08-12 2011-05-10 Intel Corporation Method and system for processing multicast packets
FR2879874B1 (en) * 2004-12-16 2008-11-07 Eads Telecom Soc Par Actions S METHOD FOR STARTING AN IP STATION, SYSTEM, SERVER AND STATION USING THE SAME, AND METHOD FOR ESTABLISHING TELEPHONE CALL
US7433673B1 (en) * 2004-12-17 2008-10-07 Sprint Spectrum L.P. Method and system for providing location information for a wireless local area network (WLAN)
RU2491737C2 (en) * 2006-03-31 2013-08-27 Квэлкомм Инкорпорейтед Memory management for high-speed medium access control
US7685396B2 (en) * 2007-03-05 2010-03-23 Research In Motion Limited System and method for dynamic memory allocation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2037874C1 (en) * 1993-05-10 1995-06-19 Валерий Алексеевич Харитонов Device for control of memory unit
US5715430A (en) * 1994-04-26 1998-02-03 Kabushiki Kaisha Toshiba Multiprocessor computer system and a method for memory allocation to optimize cache coherency within the system
RU2006118342A (en) * 2004-09-29 2007-12-20 Сони Корпорейшн (JP) INFORMATION PROCESSING DEVICE, MEMORY AREA MANAGEMENT METHOD AND COMPUTER PROGRAM

Also Published As

Publication number Publication date
CN101971581A (en) 2011-02-09
RU2010144764A (en) 2012-05-10
US20090254731A1 (en) 2009-10-08
KR20100126592A (en) 2010-12-01
JP5265758B2 (en) 2013-08-14
TW201018142A (en) 2010-05-01
CN101971581B (en) 2013-11-06
EP2266265A1 (en) 2010-12-29
ATE516647T1 (en) 2011-07-15
ES2367605T3 (en) 2011-11-04
JP2011521313A (en) 2011-07-21
EP2266265B1 (en) 2011-07-13
CA2718291A1 (en) 2009-10-08
KR101134195B1 (en) 2012-04-09
WO2009124164A1 (en) 2009-10-08
US8321651B2 (en) 2012-11-27

Similar Documents

Publication Publication Date Title
RU2460222C2 (en) System and method of allocating memory in embedded systems or wireless communication systems
CN101764835B (en) Task allocation method and device based on MapReduce programming framework
CN103378919B (en) Frame information (FI) message transmission method and apparatus
CN105446813A (en) Resource distribution method and device
WO2020199760A1 (en) Data storage method, memory and server
CN103841562B (en) A kind of time interval resource takes processing method and processing device
CN114710467B (en) IP address storage method and device and hardware gateway
CN113965519B (en) Flow control and cluster resource guarantee method, equipment and storage medium
US20210084100A1 (en) Packet Processing Method, Related Device, and Computer Storage Medium
EP3952234A1 (en) Method and device for setting virtual channel of data stream
CN116049085A (en) Data processing system and method
CN109614345B (en) Memory management method and device for communication between protocol layers
CN105208126B (en) A kind of interference management method based on user terminal storage
US12050539B2 (en) Data access method and apparatus and storage medium
KR101889749B1 (en) Message scheduling method
CN117891618B (en) Resource task processing method and device of artificial intelligent model training platform
KR102214186B1 (en) Server using hierarchical sturctured memory management technique on multi process
WO2013000250A1 (en) Resource processing method and device
WO2023248842A1 (en) Computer system, e2 node, and methods for these
CN118488012A (en) Queue distribution method, queue distribution device, electronic equipment and storage medium
CN106919513B (en) Memory management method and system
CN117950569A (en) Data processing method, apparatus, device, storage medium, and program product
CN118227322A (en) CXL-based data transmission method, electronic equipment and computing equipment
KR20210008885A (en) Server using hierarchical sturctured memory management technique on multi process
CN118535518A (en) Data processing method, device, equipment, system and readable storage medium

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20190403