Forbindelse

I datalogi er en gren en operation, der består i at bevæge sig inden i en kode, der udføres af en processor , ved at "springe" til en identificeret adresse i stedet for at fortsætte udførelsen af ​​koden sekventielt.

Forløbet af en forbindelsesoperation

En processor er en sekventiel behandlingsenhed, hvilket betyder, at den udfører et sæt instruktioner ved at udføre den ene efter den anden. Til dette har processoren en intern tæller , der angiver hukommelsesadressen for den næste instruktion, der skal udføres, en tæller, der normalt inkrementeres ved hver cyklus for at pege på instruktionen umiddelbart efter den aktuelle instruktion.

En grenoperation afbryder denne sekventielle operation ved at ændre tællerens værdi med en vilkårlig adresse for at få processoren til at indlæse og udføre en del af koden, der er placeret i et afsnit af hukommelsen, der er forskellig fra det, der forventes af den lineære opførsel. Dette gør det især muligt at hoppe til en subrutine eller udføre forskellige instruktioner afhængigt af resultatet af en betinget test. Således, uanset om en filial udføres ofte er baseret på test af værdien af processorens tilstand register, et register med angivelse af resultatet af en tidligere beregning.

Forbindelser og rørledning

En processor er generelt dannet af en rørledning, der indeholder både den instruktion, der aktuelt udføres, men også de næste instruktioner, hver i en anden udførelsestilstand, for at øge behandlingshastigheden. Imidlertid afbryder udførelsen af ​​en filial den lineære drift af programmet, hvilket betyder, at de instruktioner, der er indlæst på forhånd i rørledningen, i realiteten ikke skal udføres til fordel for dem, der er placeret på den nye hukommelsesadresse. Rørledningen skal derfor tømmes og genopfyldes med de korrekte instruktioner.

Nuværende processorer integrerer derfor ofte grænseforudsigelsesmekanismer , som forsøger at forudsige resultatet af en gren inden udførelsen af ​​beregningen, hvilket gør det muligt at beslutte, om springet skal udføres eller ej for at indlæse de korrekte instruktioner på forhånd i rørledningen. Hvis en forkert forudsigelse resulterer i skylning af rørledningen, på den anden side vil en korrekt forudsigelse tillade, at kodeudførelse fortsætter uden afbrydelse.