An Entity of Type: Election, from Named Graph: http://dbpedia.org, within Data Space: dbpedia.org

In compiler optimization, register allocation is the process of assigning local automatic variables and expression results to a limited number of processor registers. Register allocation can happen over a basic block (local register allocation), over a whole function/procedure (global register allocation), or across function boundaries traversed via call-graph (interprocedural register allocation). When done per function/procedure the calling convention may require insertion of save/restore around each call-site.

Property Value
dbo:abstract
  • Přidělování registrů je jednou z úloh překladačů, které vytváří ze zdrojového kódu strojový kód nebo jazyk symbolických adres, který bude následně na strojový kód převeden. Podstata úlohy vychází z typické situace, kdy počítačový program využívá více proměnných, než kolik je na cílovém procesoru k disposici registrů, nelze tedy každé proměnné přiřadit její registr. Mít všechny proměnné pouze v operační paměti by bylo značně neefektivní, protože operační paměť je ve srovnání s registry velmi pomalá, a navíc řada strojových instrukcí vyžaduje, aby byl některý z jejích operandů v registrech. Úlohou je najít optimální využití registrů pro reprezentaci vždy těch proměnných, s kterými je pracováno, tedy typicky zejména minimalizovat přístup do operační paměti. V praxi je úloha ještě složitější tím, že některé instrukce upřednostňují nebo vyžadují pro svou práci konkrétní registry, na některých platformách se některé registry částečně překrývají (například , , , na architektuře x86), je vhodné vzít v úvahu vliv keše a podobně. Také je obvykle třeba vzít v úvahu volací konvence, neboť při předávání dat podprogramu (a i předávání návratové hodnoty) jsou rovněž užívány registry, ať už jsou daná data nebo . Průlomovým výsledkem ohledně přidělování registrů je práce , který v roce 1982 publikoval s kolegy článek, v němž navrhli převést úlohu na úlohu barvení grafu a také ukázali její NP-úplnost. (cs)
  • In der Programmoptimierung bezeichnet die Registerzuteilung (engl. Register Allocation) den Prozess der Zuteilung einer großen Anzahl von Programmvariablen auf eine kleine Anzahl von Registern im Hauptprozessor. Das NP-vollständige Problem der Registerzuteilung und Auslagerung kann auf das Problem des Graphfärbens reduziert werden, was 1982 von Gregory Chaitin gezeigt wurde. (de)
  • Dans un compilateur, l'allocation de registres est une étape importante de la génération de code. Elle vise à choisir judicieusement dans quel registre du processeur seront enregistrées les variables durant l'exécution du programme que l'on compile. Les registres sont des mémoires internes au processeur, généralement capables de contenir un mot machine. Les opérations sur des valeurs rangées dans des registres sont plus rapides que celles sur des valeurs en mémoire vive, quand ce ne sont pas les seules possibles. Mais un processeur compte rarement plus de quelques dizaines de registres, bien trop peu pour toutes les variables d'un programme. Il est donc crucial de choisir avec pertinence les variables qui doivent résider dans les registres à chaque étape de l'exécution. Cela étant difficile dans les premières étapes de la compilation, on commence par faire comme si l'on disposait d'un nombre illimité de registres, puis l'on attribue à ces registres virtuels des registres réels ou des emplacements en mémoire. (fr)
  • In compiler optimization, register allocation is the process of assigning local automatic variables and expression results to a limited number of processor registers. Register allocation can happen over a basic block (local register allocation), over a whole function/procedure (global register allocation), or across function boundaries traversed via call-graph (interprocedural register allocation). When done per function/procedure the calling convention may require insertion of save/restore around each call-site. (en)
  • レジスタ割り付け(レジスタわりつけ、英: Register allocation)は、プログラム内の多数の変数を少数のCPUレジスタに多重化するコンパイラ最適化技法のひとつである。その目標は、プログラムの実行速度を最大化すべく、なるべく多くのオペランドをレジスタに保持するようにすることである。レジスタ割り付けは基本的なブロックについて行う場合(ローカルレジスタ割り付け)と関数やプロシージャ全体について行う場合(グローバルレジスタ割り付け)がある。レジスタ割り当てとも呼ぶ。 プログラムは、多数の様々なデータを処理することが多い。しかし、CPUの多くはデータを保持するのに使えるレジスタ数は限られている。機械語のオペランドとしてメモリを指定できる場合でも、なるべくレジスタを使った方が高速化される。従って、処理に必要なデータを RAMとレジスタの間で入れ替えてやる必要がある。この操作を spill(スピル、あふれ)と呼ぶ。 レジスタの spill は、マシンが持っているレジスタ数以上の変数が同時に必要とされる場合に発生する。一般にメモリはレジスタよりも遅いため、spill にはコストがかかる。 (ja)
  • Wyciek rejestrów – proces przydzielania dużej liczby zmiennych danego programu do małej liczby rejestrów procesora. (pl)
  • Registerallocatie is een onderdeel van het compileren van de broncode van een computerprogramma. Tijdens de registerallocatie-fase bepaalt de compiler hoe de registers in het uiteindelijke programma gebruikt worden. Omdat voor een processor de toegang tot een register relatief snel is vergeleken met de toegang tot het geheugen heeft het de voorkeur om tijdens de uitvoering van een programma de gegevens waarmee gewerkt wordt zo veel mogelijk in registers te hebben in plaats van in het geheugen. Het aantal registers op een processor is echter beperkt (oudere processors hadden soms slechts 4 of 8 registers ter beschikking van een programma). Het doel van registerallocatie is om op basis van gegevens over het te compileren programma een zo efficiënt mogelijk gebruik van registers te realiseren in het gecompileerde programma. (nl)
  • Распределением регистров в процессе компиляции называется отображение множества большого числа переменных фрагмента компьютерной программы (виртуальных регистров промежуточного представления) на, как правило, небольшое множество физических регистров микропроцессора. Распределение регистров может выполняться в отдельно взятом базовом блоке (локальное распределение регистров) или во всей процедуре (глобальное распределение регистров). Как правило компьютерным программам приходится работать с большим количеством данных, однако большинство микропроцессоров поддерживает операции только на фиксированном числе небольших «ячеек», называемых регистрами. Некоторые процессоры позволяют использовать операнды, хранящиеся в памяти, однако обращение к регистрам происходит намного быстрее, чем обращение в память (даже с учетом того, что указанная область памяти может быть помещена в кэш). (ru)
  • 在的領域裡,暫存器配置(Register Allocation)的用途,在於使一個在較少寄存器數量的CPU可使用較大數量的變數,暫存器配置可使用在一個基本區段(Basic block)(區域暫存器配置)、函數或程序(全域暫存器配置)、或是透過Call Graph進行跨函式邊域分析(跨程序暫存器配置),當完成每個函式或是程序,慣例上會要求每個呼叫函式的位置(Call site)必須插入儲存或是還原。 (zh)
  • Розподілом регістрів у процесі компіляції називають відображення множини великого числа змінних фрагмента комп'ютерної програми (віртуальних регістрів проміжного подання) на, як правило, невелику множину фізичних регістрів процесора. Розподіл регістрів може виконуватися в окремо взятому базовому блоці (локальний розподіл регістрів) або у всій процедурі (глобальний розподіл регістрів). Як правило комп'ютерним програмам доводиться працювати з великою кількістю даних, проте більшість мікропроцесорів підтримує операції тільки на фіксованому числі невеликих «комірок», званих регістрами. Деякі процесори дозволяють використовувати операнди, що зберігаються в пам'яті, однак звернення до регістрів відбувається значно швидше, ніж звернення до пам'яті (навіть з урахуванням того, що зазначена ділянка пам'яті може міститися в кеші). (uk)
dbo:thumbnail
dbo:wikiPageExternalLink
dbo:wikiPageID
  • 485122 (xsd:integer)
dbo:wikiPageLength
  • 43016 (xsd:nonNegativeInteger)
dbo:wikiPageRevisionID
  • 1124595082 (xsd:integer)
dbo:wikiPageWikiLink
dbp:cs1Dates
  • ly (en)
dbp:date
  • October 2021 (en)
dbp:wikiPageUsesTemplate
dcterms:subject
gold:hypernym
rdf:type
rdfs:comment
  • In der Programmoptimierung bezeichnet die Registerzuteilung (engl. Register Allocation) den Prozess der Zuteilung einer großen Anzahl von Programmvariablen auf eine kleine Anzahl von Registern im Hauptprozessor. Das NP-vollständige Problem der Registerzuteilung und Auslagerung kann auf das Problem des Graphfärbens reduziert werden, was 1982 von Gregory Chaitin gezeigt wurde. (de)
  • In compiler optimization, register allocation is the process of assigning local automatic variables and expression results to a limited number of processor registers. Register allocation can happen over a basic block (local register allocation), over a whole function/procedure (global register allocation), or across function boundaries traversed via call-graph (interprocedural register allocation). When done per function/procedure the calling convention may require insertion of save/restore around each call-site. (en)
  • レジスタ割り付け(レジスタわりつけ、英: Register allocation)は、プログラム内の多数の変数を少数のCPUレジスタに多重化するコンパイラ最適化技法のひとつである。その目標は、プログラムの実行速度を最大化すべく、なるべく多くのオペランドをレジスタに保持するようにすることである。レジスタ割り付けは基本的なブロックについて行う場合(ローカルレジスタ割り付け)と関数やプロシージャ全体について行う場合(グローバルレジスタ割り付け)がある。レジスタ割り当てとも呼ぶ。 プログラムは、多数の様々なデータを処理することが多い。しかし、CPUの多くはデータを保持するのに使えるレジスタ数は限られている。機械語のオペランドとしてメモリを指定できる場合でも、なるべくレジスタを使った方が高速化される。従って、処理に必要なデータを RAMとレジスタの間で入れ替えてやる必要がある。この操作を spill(スピル、あふれ)と呼ぶ。 レジスタの spill は、マシンが持っているレジスタ数以上の変数が同時に必要とされる場合に発生する。一般にメモリはレジスタよりも遅いため、spill にはコストがかかる。 (ja)
  • Wyciek rejestrów – proces przydzielania dużej liczby zmiennych danego programu do małej liczby rejestrów procesora. (pl)
  • 在的領域裡,暫存器配置(Register Allocation)的用途,在於使一個在較少寄存器數量的CPU可使用較大數量的變數,暫存器配置可使用在一個基本區段(Basic block)(區域暫存器配置)、函數或程序(全域暫存器配置)、或是透過Call Graph進行跨函式邊域分析(跨程序暫存器配置),當完成每個函式或是程序,慣例上會要求每個呼叫函式的位置(Call site)必須插入儲存或是還原。 (zh)
  • Přidělování registrů je jednou z úloh překladačů, které vytváří ze zdrojového kódu strojový kód nebo jazyk symbolických adres, který bude následně na strojový kód převeden. Podstata úlohy vychází z typické situace, kdy počítačový program využívá více proměnných, než kolik je na cílovém procesoru k disposici registrů, nelze tedy každé proměnné přiřadit její registr. Mít všechny proměnné pouze v operační paměti by bylo značně neefektivní, protože operační paměť je ve srovnání s registry velmi pomalá, a navíc řada strojových instrukcí vyžaduje, aby byl některý z jejích operandů v registrech. Úlohou je najít optimální využití registrů pro reprezentaci vždy těch proměnných, s kterými je pracováno, tedy typicky zejména minimalizovat přístup do operační paměti. (cs)
  • Dans un compilateur, l'allocation de registres est une étape importante de la génération de code. Elle vise à choisir judicieusement dans quel registre du processeur seront enregistrées les variables durant l'exécution du programme que l'on compile. (fr)
  • Registerallocatie is een onderdeel van het compileren van de broncode van een computerprogramma. Tijdens de registerallocatie-fase bepaalt de compiler hoe de registers in het uiteindelijke programma gebruikt worden. Het doel van registerallocatie is om op basis van gegevens over het te compileren programma een zo efficiënt mogelijk gebruik van registers te realiseren in het gecompileerde programma. (nl)
  • Распределением регистров в процессе компиляции называется отображение множества большого числа переменных фрагмента компьютерной программы (виртуальных регистров промежуточного представления) на, как правило, небольшое множество физических регистров микропроцессора. Распределение регистров может выполняться в отдельно взятом базовом блоке (локальное распределение регистров) или во всей процедуре (глобальное распределение регистров). (ru)
  • Розподілом регістрів у процесі компіляції називають відображення множини великого числа змінних фрагмента комп'ютерної програми (віртуальних регістрів проміжного подання) на, як правило, невелику множину фізичних регістрів процесора. Розподіл регістрів може виконуватися в окремо взятому базовому блоці (локальний розподіл регістрів) або у всій процедурі (глобальний розподіл регістрів). (uk)
rdfs:label
  • Přidělování registrů (cs)
  • Registerzuteilung (de)
  • Allocation de registres (fr)
  • レジスタ割り付け (ja)
  • Registerallocatie (nl)
  • Register allocation (en)
  • Wyciek rejestrów (pl)
  • Распределение регистров (ru)
  • Розподіл регістрів (uk)
  • 暫存器配置 (zh)
rdfs:seeAlso
owl:sameAs
prov:wasDerivedFrom
foaf:depiction
foaf:isPrimaryTopicOf
is dbo:wikiPageDisambiguates of
is dbo:wikiPageRedirects of
is dbo:wikiPageWikiLink of
is foaf:primaryTopic of
Powered by OpenLink Virtuoso    This material is Open Knowledge     W3C Semantic Web Technology     This material is Open Knowledge    Valid XHTML + RDFa
This content was extracted from Wikipedia and is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License