Заявлена группа изобретений “Переупорядочение составных условных выражений для более быстрого закорачивания”, совокупность признаков которых изложена в формуле, представленной в корреспонденции, поступившей 08.08.2023, в следующей редакции:
“1. Вычислительное устройство, выполненное с возможностью компиляции кода с переупорядочением составных условных выражений, причем вычислительное устройство содержит процессор, выполненный с возможностью, во время исполнения компилятора:
принимать исходный код в компиляторе, при этом исходный код включает в себя по меньшей мере одно составное условное выражение, имеющее множество условий, которые предназначены оцениваться как часть исполнения ассемблерного кода, компилируемого из исходного кода, для определения того, какие из множества кодовых блоков ветвления ассемблерного кода должны исполняться как часть исполнения ассемблерного кода, при этом каждое условие из данного множества условий включает в себя кодовый блок, включающий в себя одну или более инструкций для того, чтобы оценивать это условие как часть исполнения ассемблерного кода;
определять множество упорядочений условий, включенных в составное условное выражение;
определять, что два или более упорядочений из множества упорядочений множества условий удовлетворяют одному или более ограничениям по допустимости, на основе синтаксической структуры одной или более инструкций каждого из множества условий и что по меньшей мере одно упорядочение из множества упорядочений не удовлетворяет этим одному или более ограничениям по допустимости;
только для каждого упорядочения из множества упорядочений, которое удовлетворяет одному или более ограничениям по допустимости, во время исполнения компилятора и после определения того, что данное упорядочение удовлетворяет одному или более ограничениям по допустимости, определять соответствующие оценочные вычислительные затраты для этого упорядочения, без определения по меньшей мере одних соответствующих вычислительных затрат для упомянутого по меньшей мере одного упорядочения, которое не удовлетворяет одному или более ограничениям по допустимости;
при этом соответствующие вычислительные затраты для каждого упорядочения из множества упорядочений, которое удовлетворяет одному или более ограничениям по допустимости, определяются, по меньшей мере, отчасти посредством:
присвоения количественного показателя оценочных затрат каждой инструкции, включенной в упомянутое упорядочение, в соответствии с тем, что указано в таблице оценочных вычислительных затрат, которая соотносит множество типов инструкций с соответственным множеством оценочных вычислительных затрат, и суммирования соответственных количественных показателей оценочных затрат, присвоенных каждой инструкции;
переупорядочивать упомянутое множество условий таким образом, чтобы иметь упорядочение, которое имеет наименьшие оценочные вычислительные затраты из упорядочений, которые удовлетворяют одному или более ограничениям по допустимости; и компилировать исходный код с переупорядоченным множеством условий в ассемблерный код.
2. Вычислительное устройство по п.1, в котором исходный код дополнительно включает в себя:
кодовый блок первого ветвления, включающий в себя одну или более инструкций оценки первого ветвления, приспособленных исполняться когда упомянутое множество условий являются истинными; и кодовый блок второго ветвления, включающий в себя одну или более инструкций оценки второго ветвления, приспособленных исполняться когда по меньшей мере одно условие из упомянутого множества условий является ложным.
3. Вычислительное устройство по п.2, при этом упомянутые одно или более ограничений по допустимости включают в себя такое ограничение, что исходный код включает в себя один кодовый блок первого ветвления и один кодовый блок второго ветвления.
4. Вычислительное устройство по п.1, при этом упомянутые одно или более ограничений по допустимости включают в себя такое ограничение, что соответствующий кодовый блок каждого условия включает в себя инструкцию перейти к общему целевому кодовому блоку.
5. Вычислительное устройство по п.4, при этом упомянутые одно или более ограничений по допустимости включают в себя такое ограничение, что часть исходного кода, которая следует за последним кодовым блоком из соответствующих кодовых блоков множества условий и предшествует общему целевому кодовому блоку, имеет одну точку входа и одну точку выхода.
6. Вычислительное устройство по п.1, при этом упомянутые одно или более ограничений по допустимости включают в себя такое ограничение, что ни одна инструкция не вызывает неопределенную переменную.
7. Вычислительное устройство по п.1, при этом каждый кодовый блок представляет собой базисный блок.
8. Вычислительное устройство по п.1, при этом по меньшей мере один кодовый блок включает в себя множество базисных блоков.
9. Вычислительное устройство по п.1, при этом каждые из составного условного выражения и множества условий, включенных в составное условное выражение, предназначены оцениваться в виде соответствующих булевых значений, когда ассемблерный код исполняется.
10. Вычислительное устройство по п.1, при этом каждый из множества типов инструкций представляет собой соответствующий тип операции, где с каждым типом операции связаны оценочные целочисленные затраты и оценочные затраты с плавающей запятой, причем оценочные целочисленные затраты представляют собой количественный показатель оценочных затрат данного типа операции при её выполнении с использованием целочисленного вычисления, а оценочные затраты с плавающей запятой представляют собой количественный показатель оценочных затрат данного типа операции при её выполнении с использованием вычисления с плавающей запятой.
11. Вычислительное устройство по п.10, при этом типы операций включают в себя суммирование, вычитание, сравнение, отрицание, деление, вычисление остатка, AND, OR, XOR, вычисление минимума, вычисление максимума, загрузку и/или сохранение.
12. Компьютерно-реализуемый способ компиляции кода с переупорядочением составных условных выражений, осуществляемый посредством процессора вычислительного устройства, при этом способ содержит этапы, на которых, во время исполнения компилятора:
принимают исходный код в компиляторе, при этом исходный код включает в себя по меньшей мере одно составное условное выражение, имеющее множество условий, которые предназначены оцениваться как часть исполнения ассемблерного кода, компилируемого из исходного кода, для определения того, какие из множества кодовых блоков ветвления ассемблерного кода должны исполняться как часть исполнения ассемблерного кода, при этом каждое условие из данного множества условий включает в себя кодовый блок, включающий в себя одну или более инструкций для того, чтобы оценивать это условие как часть исполнения ассемблерного кода;
определяют множество упорядочений условий, включенных в составное условное выражение;
определяют, что два или более упорядочений из множества упорядочений множества условий удовлетворяют одному или более ограничениям по допустимости, на основе синтаксической структуры одной или более инструкций каждого из множества условий и что по меньшей мере одно упорядочение из множества упорядочений не удовлетворяет этим одному или более ограничениям по допустимости;
только для каждого упорядочения из множества упорядочений, которое удовлетворяет одному или более ограничениям по допустимости, во время исполнения компилятора и после определения того, что данное упорядочение удовлетворяет одному или более ограничениям по допустимости, определяют соответствующие оценочные вычислительные затраты для этого упорядочения, без определения по меньшей мере одних соответствующих вычислительных затрат для упомянутого по меньшей мере одного упорядочения, которое не удовлетворяет одному или более ограничениям по допустимости;
при этом определение соответствующих вычислительных затрат для каждого упорядочения из множества упорядочений, которое удовлетворяет одному или более ограничениям по допустимости, включает в себя:
присвоение количественного показателя оценочных затрат каждой инструкции, включенной в упомянутое упорядочение, в соответствии с тем, что указано в таблице оценочных вычислительных затрат, которая соотносит множество типов инструкций с соответственным множеством оценочных вычислительных затрат, и суммирование соответственных количественных показателей оценочных затрат, присвоенных каждой инструкции;
переупорядочивают упомянутое множество условий таким образом, чтобы иметь упорядочение, которое имеет наименьшие оценочные вычислительные затраты из упорядочений, которые удовлетворяют одному или более ограничениям по допустимости; и компилируют исходный код с переупорядоченным множеством условий в ассемблерный код.
13. Способ по п.12, в котором исходный код дополнительно включает в себя:
кодовый блок первого ветвления, включающий в себя одну или более инструкций оценки первого ветвления, приспособленных исполняться когда упомянутое множество условий являются истинными; и кодовый блок второго ветвления, включающий в себя одну или более инструкций оценки второго ветвления, приспособленных исполняться когда по меньшей мере одно условие из упомянутого множества условий является ложным.
14. Способ по п.13, в котором упомянутые одно или более ограничений по допустимости включают в себя ограничение, состоящее в том, что исходный код включает в себя один кодовый блок первого ветвления и один кодовый блок второго ветвления.
15. Способ по п.12, в котором упомянутые одно или более ограничений по допустимости включают в себя такое ограничение, что соответствующий кодовый блок каждого условия включает в себя инструкцию перейти к общему целевому кодовому блоку.
16. Способ по п.12, в котором упомянутые одно или более ограничений по допустимости включают в себя такое ограничение, что часть исходного кода, которая следует за последним кодовым блоком из соответствующих кодовых блоков множества условий и предшествует общему целевому кодовому блоку, имеет одну точку входа и одну точку выхода.
17. Способ по п.12, в котором упомянутые одно или более ограничений по допустимости включают в себя такое ограничение, что ни одна инструкция не вызывает неопределенную переменную.
18. Способ по п.12, в котором каждый кодовый блок представляет собой базисный блок.
19. Способ по п.12, в котором по меньшей мере один кодовый блок включает в себя множество базисных блоков.
20. Способ по п.12, в котором каждый из множества типов инструкций представляет собой соответствующий тип операции, где с каждым типом операции связаны оценочные целочисленные затраты и оценочные затраты с плавающей запятой, причем оценочные целочисленные затраты представляют собой количественный показатель оценочных затрат данного типа операции при её выполнении с использованием целочисленного вычисления, а оценочные затраты с плавающей запятой представляют собой количественный показатель оценочных затрат данного типа операции при её выполнении с использованием вычисления с плавающей запятой.
21. Способ по п.20, в котором типы операций включают в себя суммирование, вычитание, сравнение, отрицание, деление, вычисление остатка, AND, OR, XOR, вычисление минимума, вычисление максимума, загрузку и/или сохранение.
22. Вычислительное устройство, выполненное с возможностью компиляции кода с переупорядочением составных условных выражений, причем вычислительное устройство содержит процессор, выполненный с возможностью, во время исполнения компилятора:
принимать исходный код в компиляторе, при этом исходный код включает в себя множество кодовых блоков, которые включены в составное условное выражение и предназначены оцениваться как часть исполнения ассемблерного кода, компилируемого из исходного кода, для определения того, какие из множества кодовых блоков ветвления ассемблерного кода должны исполняться как часть исполнения ассемблерного кода;
определять множество упорядочений условий, включенных в составное условное выражение;
определять, что два или более упорядочений из множества упорядочений множества кодовых блоков множества условий удовлетворяют одному или более ограничениям по допустимости, на основе синтаксической структуры одной или более инструкций каждого из множества кодовых блоков и что по меньшей мере одно упорядочение из множества упорядочений не удовлетворяет этим одному или более ограничениям по допустимости;
только для каждого упорядочения из множества упорядочений, которое удовлетворяет одному или более ограничениям по допустимости, во время исполнения компилятора и после определения того, что данное упорядочение удовлетворяет одному или более ограничениям по допустимости, определять соответствующие оценочные вычислительные затраты для этого упорядочения, без определения по меньшей мере одних соответствующих вычислительных затрат для упомянутого по меньшей мере одного упорядочения, которое не удовлетворяет одному или более ограничениям по допустимости, при этом соответствующие вычислительные затраты для каждого упорядочения из множества упорядочений, которое удовлетворяет одному или более ограничениям по допустимости, определяются, по меньшей мере, отчасти посредством:
присвоения количественного показателя оценочных затрат каждой инструкции, включенной в упомянутое упорядочение, в соответствии с тем, что указано в таблице оценочных вычислительных затрат, которая соотносит множество типов инструкций с соответственным множеством оценочных вычислительных затрат, и суммирования соответственных количественных показателей оценочных затрат, присвоенных каждой инструкции;
переупорядочивать упомянутое множество кодовых блоков таким образом, чтобы иметь упорядочение, которое имеет наименьшие оценочные вычислительные затраты из упорядочений, которые удовлетворяют одному или более ограничениям по допустимости; и компилировать исходный код с переупорядоченным множеством условий в ассемблерный код.”
При вынесении решения Роспатента от 29.09.2023 об отказе в выдаче патента на группу изобретений к рассмотрению была принята приведенная выше формула.
В решении Роспатента сделан вывод о том, что заявленная группа изобретений не соответствует условию патентоспособности, предусмотренному пунктом 5 статьи 1350 Гражданского кодекса, действовавшей на дату международной подачи заявки (далее - Кодекс), и не относится к изобретениям.
В решении Роспатента, в частности, отмечено, что поскольку указанный в описании заявки результат “достигается исключительно за счет использования более модернизированного программного продукта, можно сделать вывод, что данный результат не имеет технического характера (так например, повышение производительности выполнения той или иной задачи на компьютере за счет использования более быстрой программы, в частности замены устаревшего неэффективного компилятора на более эффективный и быстрый не может быть рассмотрено в качестве технического результата, поскольку он обеспечивается исключительно за счет особенностей новой программы). Соответственно вся совокупность признаков н.п. 1 и 12, 22 формулы обеспечивают достижение результата, который не имеет технического характера.”
На решение об отказе в выдаче патента на изобретение в соответствии с пунктом 3 статьи 1387 Гражданского кодекса, действовавшего на дату подачи возражения, поступило возражение, в котором заявитель выразил несогласие с мотивировкой указанного решения, отметив, что: “результат, достигаемый решениями, охарактеризованными в пп. 1, 12, 22 формулы изобретения, заключается в повышении эффективности исполнения скомпилированного кода за счет обеспечения, на стадии его компиляции, автоматизированной оптимизации кода со снижением вычислительных затрат при исполнении, связанных с состав-ными условными выражениями в коде. Принимая во внимание определение технического результата…, согласно которому к техническим результатам относятся результаты, представляющие собой объективно проявляющийся технический эффект, характеризующийся физическими, химическими или биологическими параметрами, заявитель делает заключение, что указанный результат, достигаемый при решении вышеупомянутой технической задачи, однозначно имеет технический характер, поскольку имеет объективное проявление, характеризуясь такими физическими параметрами, как, по меньшей мере, снижение вычислительной загрузки процессора и, соответственно, времени исполнения.”
Изучив материалы дела, коллегия установила следующее.
С учетом даты подачи заявки (12.03.2019) правовая база для оценки патентоспособности заявленной группы изобретений включает Кодекс, Правила составления, подачи и рассмотрения документов, являющихся основанием для совершения юридически значимых действий по государственной регистрации изобретений, и их формы, утвержденные Минэкономразвития от 25.05.2016 № 316 и зарегистрированные в Минюсте РФ 11.07.2016, рег. № 42800 (далее – Правила) и Требования к документам заявки на выдачу патента на изобретение, утвержденные приказом Минэкономразвития от 25.05.2016 № 316 и зарегистрированные в Минюсте РФ 11.07.2016, рег. № 42800 (далее – Требования).
В соответствии с пунктом 1 статьи 1350 Кодекса в качестве изобретения охраняется техническое решение в любой области, относящееся к продукту (в частности, устройству, веществу, штамму микроорганизма, культуре клеток растений или животных) или способу (процессу осуществления действий над материальным объектом с помощью материальных средств), в том числе к применению продукта или способа по определенному назначению.
В соответствии с пунктом 5 статьи 1350 Кодекса не являются изобретениями, в частности:
- научные теории и математические методы;
- правила и методы игр, интеллектуальной или хозяйственной деятельности;
- программы для ЭВМ;
- решения, заключающиеся только в представлении информации.
В соответствии с настоящим пунктом исключается возможность отнесения этих объектов к изобретениям только в случае, когда заявка на выдачу патента на изобретение касается этих объектов как таковых.
В соответствии с пунктом 2 статьи 1386 Кодекса экспертиза заявки на изобретение по существу включает, в частности, проверку соответствия заявленного изобретения условиям патентоспособности, установленным абзацем первым пункта 1, пунктом 5 статьи 1350 Кодекса.
В соответствии с пунктом 49 Правил проверка соответствия заявленного изобретения условиям патентоспособности, предусмотренным пунктом 5 статьи 1350 Кодекса, включает анализ признаков заявленного изобретения, проблемы, решаемой созданием заявленного изобретения, результата, обеспечиваемого заявленным изобретением, исследование причинно-следственной связи признаков заявленного изобретения и обеспечиваемого им результата, который осуществляется с учетом положений пунктов 35-43 Требований к документам заявки. Заявленное изобретение признается относящимся к объектам, не являющимся изобретениями, указанным в пункте 5 статьи 1350 Кодекса, только в случае, когда заявка касается указанных объектов как таковых. По результатам проверки соответствия заявленного изобретения условиям патентоспособности, предусмотренным пунктом 5 статьи 1350 Кодекса, заявленное изобретение признается относящимся к объектам, не являющимся изобретениями, как таковым в том случае, когда родовое понятие, отражающее назначение изобретения, приведенное в формуле изобретения, или все признаки, которыми заявленное изобретение охарактеризовано в формуле изобретения, являются признаками этих объектов, или все признаки, которыми заявленное изобретение охарактеризовано в формуле изобретения, обеспечивают получение результата, который не является техническим.
В соответствии с пунктом 51 Правил заявленное изобретение признается техническим решением, относящимся к продукту или способу, в том числе к применению продукта или способа по определенному назначению, если формула изобретения содержит совокупность существенных признаков, относящихся к продукту или способу, в том числе к применению продукта или способа по определенному назначению, достаточную для решения указанной заявителем технической проблемы и достижения технического результата (результатов), обеспечиваемого изобретением. Проверка соответствия заявленного изобретения условиям патентоспособности, предусмотренным абзацем первым пункта 1 статьи 1350 Кодекса, включает анализ признаков заявленного изобретения, проблемы, решаемой созданием заявленного изобретения, результата, обеспечиваемого заявленным изобретением, исследование причинно-следственной связи признаков заявленного изобретения и обеспечиваемого им результата и выявление сущности заявленного технического решения. В ходе проверки соответствия заявленного изобретения условиям патентоспособности, предусмотренным абзацем первым пункта 1 статьи 1350 Кодекса, проверяется, не противоречит ли известным законам природы и знаниям современной науки о них приведенное в описании изобретения обоснование достижения технического результата, обеспечиваемого изобретением.
В соответствии с пунктом 36 Требований в разделе описания изобретения “Раскрытие сущности изобретения” приводятся сведения, раскрывающие технический результат и сущность изобретения как технического решения, относящегося к продукту или способу, в том числе к применению продукта или способа по определенному назначению, с полнотой, достаточной для его осуществления специалистом в данной области техники, при этом:
- сущность изобретения как технического решения выражается в совокупности существенных признаков, достаточной для решения указанной заявителем технической проблемы и получения обеспечиваемого изобретением технического результата;
- к техническим результатам относятся результаты, представляющие собой явление, свойство, а также технический эффект, являющийся следствием явления, свойства, объективно проявляющиеся при осуществлении способа или при изготовлении либо использовании продукта, в том числе при использовании продукта, полученного непосредственно способом, воплощающим изобретение, и, как правило, характеризующиеся физическими, химическими или биологическими параметрами, при этом не считаются техническими результаты, которые, в частности:
- заключаются только в получении информации и достигаются только благодаря применению математического метода, программы для электронной вычислительной машины или используемого в ней алгоритма.
В соответствии с пунктом 37 Требований при раскрытии сущности изобретения, относящегося к устройству, применяются следующие правила:
1) для характеристики устройств используются, в частности, следующие признаки:
- наличие одной детали, ее форма, конструктивное выполнение;
- наличие нескольких частей (деталей, компонентов, узлов, блоков), соединенных между собой сборочными операциями, в том числе свинчиванием, сочленением, клепкой, сваркой, пайкой, опрессовкой, развальцовкой, склеиванием, сшивкой, обеспечивающими конструктивное единство и реализацию устройством общего функционального назначения (функциональное единство);
- конструктивное выполнение устройства, характеризуемое наличием и функциональным назначением частей устройства (деталей, компонентов, узлов, блоков), их взаимным расположением;
- параметры и другие характеристики частей устройства (деталей, компонентов, узлов, блоков) и их взаимосвязи;
- материал, из которого выполнены части устройства и (или) устройство в целом;
- среда, выполняющая функцию части устройства.
В соответствии с пунктом 43 Требований при раскрытии сущности изобретения, относящегося к способу, применяются следующие правила:
Для характеристики способов используются, в частности, следующие признаки:
- наличие действия или совокупности действий;
- порядок выполнения действий во времени (последовательно, одновременно, в различных сочетаниях и тому подобное);
- условия осуществления действий; режим; использование веществ (например, исходного сырья, реагентов, катализаторов), устройств (например, приспособлений, инструментов, оборудования), штаммов микроорганизмов, линий клеток растений или животных.
В соответствии с пунктом 46 Требований для подтверждения возможности осуществления изобретения, относящегося к устройству, приводятся следующие сведения:
1) описание конструкции устройства (в статическом состоянии) и его функционирования (работа) или способ использования со ссылками на фигуры, а при необходимости - на иные поясняющие материалы (например, эпюры, временные диаграммы);
2) при описании функционирования (работы) устройства описывается функционирование (работа) устройства в режиме, обеспечивающем при осуществлении изобретения достижение технического результата, приводятся сведения о других результатах, обеспечиваемых изобретением; при использовании в устройстве новых материалов описывается способ их получения.
В соответствии с пунктом 49 Требований для подтверждения возможности осуществления изобретения, относящегося к способу, приводятся следующие сведения:
1) для изобретения, относящегося к способу, в примерах его реализации указываются последовательность действий (приемов, операций) над материальным объектом, а также условия проведения действий, конкретные режимы (температура, давление и тому подобное), используемые при этом материальные средства (например, устройства, вещества, штаммы), если этом необходимо;
2) если способ характеризуется использованием средств, известных до даты приоритета изобретения, достаточно эти средства раскрыть таким образом, чтобы можно было осуществить изобретение. При использовании неизвестных средств приводятся сведения, позволяющие их осуществить, и в случае необходимости прилагается графическое изображение.
Существо заявленной группы решений выражено в приведенной выше формуле, которую коллегия принимает к рассмотрению.
Анализ доводов возражения и доводов, содержащихся в решении Роспатента об отказе в выдаче патента, касающихся оценки соответствия заявленной группы решений условию патентоспособности, предусмотренному пунктом 5 статьи 1350 Кодекса, показал следующее.
В качестве решения по независимому пункту 1 формулы заявлено вычислительное устройство, выполненное с возможностью компиляции кода с переупорядочением составных условных выражений.
В качестве решения по независимому пункту 12 формулы заявлен компьютерно-реализуемый способ компиляции кода с переупорядочением составных условных выражений.
В качестве решения по независимому пункту 22 формулы заявлено вычислительное устройство, выполненное с возможностью компиляции кода с переупорядочением составных условных выражений.
Согласно материалам заявки предложенное вычислительное устройство по независимому пункту 1 формулы включает в себя процессор.
Процессор выполнен с возможностью:
- принимать исходный код в компиляторе;
- определять множество упорядочений условий, включенных в составное условное выражение;
- определять, что два или более упорядочений из множества упорядочений множества условий удовлетворяют одному или более ограничениям по допустимости на основе синтаксической структуры одной или более инструкций каждого из множества условий, и что по меньшей мере одно упорядочение из множества упорядочений не удовлетворяет этим одному или более ограничениям по допустимости;
- определять соответствующие оценочные вычислительные затраты для каждого упорядочения из множества упорядочений, которое удовлетворяет одному или более ограничениям по допустимости во время исполнения компилятора и после определения того, что данное упорядочение удовлетворяет одному или более ограничениям по допустимости;
- переупорядочивать упомянутое множество условий таким образом, чтобы иметь упорядочение, которое имеет наименьшие оценочные вычислительные затраты из упорядочений, которые удовлетворяют одному или более ограничениям по допустимости;
- компилировать исходный код с переупорядоченным множеством условий в ассемблерный код.
При этом исходный код включает в себя по меньшей мере одно составное условное выражение, имеющее множество условий, которые предназначены оцениваться как часть исполнения ассемблерного кода, компилируемого из исходного кода, для определения того, какие из множества кодовых блоков ветвления ассемблерного кода должны исполняться как часть исполнения ассемблерного кода, при этом каждое условие из данного множества условий включает в себя кодовый блок, включающий в себя одну или более инструкций для того, чтобы оценивать это условие как часть исполнения ассемблерного кода.
При этом соответствующие вычислительные затраты для каждого упорядочения из множества упорядочений, которое удовлетворяет одному или более ограничениям по допустимости, определяются, по меньшей мере, отчасти посредством присвоения количественного показателя оценочных затрат каждой инструкции, включенной в упомянутое упорядочение, в соответствии с тем, что указано в таблице оценочных вычислительных затрат, которая соотносит множество типов инструкций с соответственным множеством оценочных вычислительных затрат, и суммирования соответственных количественных показателей оценочных затрат, присвоенных каждой инструкции.
Согласно материалам заявки предложенный компьютерно-реализуемый способ компиляции кода с переупорядочением составных условных выражений по независимому пункту 12 формулы осуществляется посредством процессора вычислительного устройства. Способ включает следующие этапы:
- принимают исходный код в компиляторе;
- определяют множество упорядочений условий, включенных в составное условное выражение;
- определяют, что два или более упорядочений из множества упорядочений множества условий удовлетворяют одному или более ограничениям по допустимости, на основе синтаксической структуры одной или более инструкций каждого из множества условий и что по меньшей мере одно упорядочение из множества упорядочений не удовлетворяет этим одному или более ограничениям по допустимости;
- определяют соответствующие оценочные вычислительные затраты только для каждого упорядочения из множества упорядочений, которое удовлетворяет одному или более ограничениям по допустимости, во время исполнения компилятора и после определения того, что данное упорядочение удовлетворяет одному или более ограничениям по допустимости, без определения по меньшей мере одних соответствующих вычислительных затрат для упомянутого по меньшей мере одного упорядочения, которое не удовлетворяет одному или более ограничениям по допустимости;
- переупорядочивают упомянутое множество условий таким образом, чтобы иметь упорядочение, которое имеет наименьшие оценочные вычислительные затраты из упорядочений, которые удовлетворяют одному или более ограничениям по допустимости;
- компилируют исходный код с переупорядоченным множеством условий в ассемблерный код.
При этом исходный код включает в себя по меньшей мере одно составное условное выражение, имеющее множество условий, которые предназначены оцениваться как часть исполнения ассемблерного кода, компилируемого из исходного кода, для определения того, какие из множества кодовых блоков ветвления ассемблерного кода должны исполняться как часть исполнения ассемблерного кода, при этом каждое условие из данного множества условий включает в себя кодовый блок, включающий в себя одну или более инструкций для того, чтобы оценивать это условие как часть исполнения ассемблерного кода.
При этом определение соответствующих вычислительных затрат для каждого упорядочения из множества упорядочений, которое удовлетворяет одному или более ограничениям по допустимости, включает в себя:
присвоение количественного показателя оценочных затрат каждой инструкции, включенной в упомянутое упорядочение, в соответствии с тем, что указано в таблице оценочных вычислительных затрат, которая соотносит множество типов инструкций с соответственным множеством оценочных вычислительных затрат;
суммирование соответственных количественных показателей оценочных затрат, присвоенных каждой инструкции.
Согласно материалам заявки предложенное вычислительное устройство по независимому пункту 22 формулы включает в себя процессор.
Процессор выполнен с возможностью:
- принимать исходный код в компиляторе;
- определять множество упорядочений условий, включенных в составное условное выражение;
- определять, что два или более упорядочений из множества упорядочений множества кодовых блоков множества условий удовлетворяют одному или более ограничениям по допустимости на основе синтаксической структуры одной или более инструкций каждого из множества кодовых блоков, и что по меньшей мере одно упорядочение из множества упорядочений не удовлетворяет этим одному или более ограничениям по допустимости;
- определять соответствующие оценочные вычислительные затраты только для каждого упорядочения из множества упорядочений, которое удовлетворяет одному или более ограничениям по допустимости, во время исполнения компилятора и после определения того, что данное упорядочение удовлетворяет одному или более ограничениям по допустимости упорядочения, без определения по меньшей мере одних соответствующих вычислительных затрат для упомянутого по меньшей мере одного упорядочения, которое не удовлетворяет одному или более ограничениям по допустимости;
- переупорядочивать упомянутое множество кодовых блоков таким образом, чтобы иметь упорядочение, которое имеет наименьшие оценочные вычислительные затраты из упорядочений, которые удовлетворяют одному или более ограничениям по допустимости;
- компилировать исходный код с переупорядоченным множеством условий в ассемблерный код.
При этом исходный код включает в себя множество кодовых блоков, которые включены в составное условное выражение и предназначены оцениваться как часть исполнения ассемблерного кода, компилируемого из исходного кода, для определения того, какие из множества кодовых блоков ветвления ассемблерного кода должны исполняться как часть исполнения ассемблерного кода.
При этом соответствующие вычислительные затраты для каждого упорядочения из множества упорядочений, которое удовлетворяет одному или более ограничениям по допустимости, определяются, по меньшей мере отчасти, посредством:
присвоения количественного показателя оценочных затрат каждой инструкции, включенной в упомянутое упорядочение, в соответствии с тем, что указано в таблице оценочных вычислительных затрат, которая соотносит множество типов инструкций с соответственным множеством оценочных вычислительных затрат, и суммирования соответственных количественных показателей оценочных затрат, присвоенных каждой инструкции.
Необходимо подчеркнуть, что технический результат, достигаемый при использовании заявленной группы решений, в описании заявки в явном виде не указан.
Вместе с тем, согласно описанию, c использованием заявленных вычислительных устройств и способа “вычислительное устройство может определять то, какое из множества составных условных выражений с наибольшей вероятностью требует наименьшего объема вычислительных ресурсов при удовлетворении синтаксическим ограничениям по допустимости. При этом подходе может исключаться затратная обработка систем предшествующего уровня техники, которая ранее возникала в результате, когда сложное условное выражение необязательно оценивается до простого условного выражения, которое не проходит тестовую оценку. Таким образом, системы и способы, описанные выше, могут обеспечивать возможность более эффективного исполнения компилированного кода, чем код, компилированный с использованием ранее существующих способов” (абзац [0045] описания заявки). То есть, результатом заявленной группы решений является получение компилированного кода, выполнение которого требует меньше вычислительных ресурсов, чем в ранее использовавшихся решениях.
Как следует из приведенной выше правовой базы, заявленное изобретение признается относящимся к объектам, не являющимся изобретениями как таковыми, в случае, когда:
- родовое понятие, отражающее назначение изобретения, приведенное в формуле изобретения, является признаком этих объектов; или
- все признаки, которыми заявленное изобретение охарактеризовано в формуле изобретения, являются признаками этих объектов; или
- все признаки, которыми заявленное изобретение охарактеризовано в формуле изобретения, обеспечивают получение только такого результата, который не является техническим.
В отношении родового понятия по независимому пункту 12 формулы заявленного решения необходимо отметить следующее.
Как правомерно указано в решении Роспатента, из уровня техники известно:
Компилятор – машинная программа, используемая для компиляции. Компиляция – трансляция программы на язык, близкий к машинному; трансляция программы, составленном на исходном языке, в объектный модуль. Осуществляется компилятором (Першиков В.И., Савинков В.М., “Толковый словарь по информатике”, “Финансы и статистика”, 1991, стр. 159 (далее – [1])).
Транслятор – обрабатывающая программа, предназначенная для преобразования исходной программы в объектный модуль. Трансляция – преобразование программы, представленной на одном из языков программирования, в эквивалентную программу на другом языке (стр. 405 [1]).
Таким образом, заявленный способ характеризует собой выполняемое на компьютере преобразование исходного кода программы, составленной на одном из языков программирования, в машинный код с помощью компилятора (машинной программы).
Следовательно, родовое понятие, характеризующее компьютерно-реализуемый способ компиляции кода с переупорядочением составных условных выражений, прямо позволяет отнести заявленное решение к преобразованию одного компьютерного кода (программы, составленной на языке программирования) в другой код (ассемблерный код) с помощью компьютерной программы, т.е. к объектам, не являющимся изобретениями.
Кроме того, признаки независимого пункта 12 формулы заявленного решения характеризуют собой получение данных (исходного кода) в компиляторе, анализ указанного кода, преобразование (оптимизация) данного кода определенным образом и компиляция (преобразование) его в ассемблерный код. Как указано в описании заявки “способы и процессы, описанные в данном документе, могут быть связаны с вычислительной системой одного или более вычислительных устройств. В частности, такие способы и процессы могут реализовываться как прикладная компьютерная программа или служба, интерфейс прикладного программирования (API), библиотека и/или другой компьютерный программный продукт”.
Обеспечиваемая с помощью предложенного способа возможность ввода информации (исходного кода) в вычислительную систему, ее обработка (анализ и оптимизация) с помощью процессора и получение результирующей информации (ассемблерного кода) достигается только благодаря программе для электронной вычислительной машины или используемому в ней алгоритму, а следовательно, не обеспечивает достижение какого-либо технического результата (пункт 36 Требований).
То есть, признаки формулы, которыми охарактеризовано заявленное предложение по независимому пункту 12, обеспечивают получение результата, который не является техническим.
Признаки зависимых пп. 13-21 формулы также не обеспечивают достижение какого-либо технического эффекта, проявляющегося в изменении каких-либо объективных характеристик материальных объектов или характера взаимодействия таких объектов, в связи с чем решения по зависимым пп. 13-21 формулы также не являются техническими.
В отношении родовых понятий по независимым пунктам 1, 22 формулы заявленных решений следует отметить, что они не позволяют однозначно отнести указанные решение к объектам, не являющимися изобретениями.
Вместе с тем признаки независимых пунктов 1, 22 формулы заявленных предложений характеризуют собой лишь стандартное средство для хранения и выполнения программы для ЭВМ, в которое не вносится каких-либо конструктивных улучшений и изменений. Обеспечиваемая заявленными устройствами по независимым пунктам 1, 22 формулы возможность ввода информации (исходного кода) в устройство, обработки (анализа и оптимизации) введенной информации с помощью процессора и получение результирующей информации (ассемблерного кода) достигается только благодаря программе для электронной вычислительной машины, а следовательно, не обеспечивает достижение какого-либо технического результата (пункт 36 Требований).
То есть, признаки формулы, которыми охарактеризовано заявленные предложения по независимым пунктам 1, 22, обеспечивают получение результата, который не является техническим.
Признаки зависимых пп. 2-11 формулы также не обеспечивают достижение какого-либо технического эффекта, проявляющегося в изменении каких-либо объективных характеристик материальных объектов или характера взаимодействия таких объектов, в связи с чем решения по зависимым пп. 2-11 формулы также не являются техническими.
Таким образом, можно согласиться с мнением, изложенным в решении Роспатента, что заявленная группа решений по независимым пунктам 1, 12, 22 формулы относится к решениям, не являющимся изобретениями (пункт 5 статьи 1350 Кодекса).