[ca] Els futurs sistemes de fiabilitat critica necessitaran un increment en el rendiment garantit per tal de salisfer l'elevada demanda de computaci6 del complex programari que actualment es l'estat de l'art. Una estrategia per aconseguir aquest rendiment es utilitzar components del camp de la computaci6 d'altes prestacions (HPC), ja que poden aportar mes poder de computaci6 que els actuals components de fiabilitat critica. Tanmateix, el suport de fiabilitat que tenen aquests HPC components no es el mateix que tenen els components de fiabilitat crilica, i l'us dels components HPC pot amenar;:ar la seguretat funcional de tot el sistema, especialment si algunes de les funcionalitats d'alta criticalitat poden ser totalment executades en algun d'aquests components (perexemple, xarxes neuronals dins d'una unitatde computaci6 grafica (GPU)). Basant-se en els requisits de fiabilitat de les aplicacions que requereixen una gran potencia de computaci6, com les d'operaci6 aut6noma, aquests components d'altes prestacions han de complir els maxims nivells de fiabilitat i per tan incloure mecanismes que aportin aquesta fiabilitat. L'objectiu general d'aquesta tesi es presentar tecniques per aconseguir aquests nivells en component d'altes prestacions. En concret, fem enfasis en unitats de computaci6 grafiques i sistemes multinucli. Les tecniques presentades tenen la intenci6 de proveir una execuci6 redundant i diversa, la qual es necessita per evitar les fallades de causa comuna (CCF), que s6n el tipus de fallades de les quals no poden ser protegides utilitzant metodes de fiabilitat (com simple redundancia) i que tenen un unic punt de fallada (una fallada que afecti les dues instancies redundants identicament). Aquestes solucions s6n comparables a l'execuci6 en lockstep (pas de bloqueig) emprada en sistemes de fiabilitat critica. El primer grup de contribucions d'aquesta tesis es bas en a habilitar una execuci6 redundant i diversa en una sola unitat de computaci6 grafica. Proposem per aix6, dues solucions diferents: (1) una minima modificaci6 en el maquinari que afecta el planificador intern de la unitat de com putaci6 grafica i (2) una soluci6 purament de programari que requereix coneixement dels recursos interns de la unitat de computaci6 grafica. En aquestes contribucions, tambe analitzem la desincronitzaci6 creat a causa de la interacci6 inherent de la dupla CPU-GPU. Finalment, l'ultima contribuci6 se centra en els sistemes multinucli. De manera similar ales contribucions previes, l'emfasi d'aquesta contribuci6 es basa en habilitar una execuci6 redundant i divers a per6 aquesta vegada en sistemes multinucli. Executar una tasca de forma redundant en dos nuclis es relativam ent simpie emprant models de program aci6 moderns com OpenMP o OpenMPI. El gran repte es tracta en ulilitzar els limitats canals d'observaci6 i de controlament interns per mantenir i garanlir que la diversitat temporal d'aquestes dues execucions redundants es mante, de manera similar a la tecnica de lockstep. Cal mencionar que el lockstep es una tecnica molt costosa ja que "segresta" la meitat dels nuclis que es tornen invisibles de cara a l'usuari i que resten inactius en aplicacions no critiques. En canvi amb una soluci6 flexible i purament de programari existis per a sistemes multinucli generics, tots els nuclis podrien ser utilitzats per les aplicacions no critiques quan no fossin necessitats per les aplicacions critiques, per tant millorant la utilitzaci6 d'aquests recursos. Per tal d'assolir aquest objectiu, aquesta tesi proposa una soluci6 purament de programari que te uns requisits minims que assoleixen la majoria dels sistemes multinucli del mercat.

[en] Future Safety-Critical Systems require a boost in guaranteed performance in order to satisfy the increasing performance demands of the state-of-the-art complex software features. Ar1 approach to achieve these performance requirements is the usage of High-Performance Computing (HPC) components which can deliver more computation power than current safety­ critical components. However, the dependability support of these HPC components are not the same as that for the safety-­ critical components, so HPC components can jeopardize the functional safety of the entire system, especially since some of the highest-criticality functionalities maybe executed entirely on top of these components (e.g., neural networks in a Graphical Processing Unit (GPU)). Based on the safety requirements of performance-hungry critical applications, such as those for an autonomous operation, these HPC components must comply with the highest criticality levels, hence including the required dependability support. The overarching goal of this thesis is to present techniques to achieve that in different HPC components. In particular, we focus on GPUs and multicores. The techniques presented aim at providing diverse redundant execution, as needed to avoid Common Cause Failure (CCF)s, which are those defeating safety measures (e.g., pure redundancy) as a consequence of a single-point fault (e.g., a fault affecting both redundant instances identically). Such a solution is comparable to the lockstep execution employed on safety-critical processors. The first set of contributions of this thesis focuses on enabling diverse redundant execution on a single GPU. We propose two different solutions: (1) a slight hardware modification affecting the internal scheduler of the GPU and (2) a software-only approach that requires knowledge of the hardware resources of the GPU. In these contributions, we also analyze the staggering created due to the CPU-GPU inherent interaction. Finally, the last contribution relates to multicore systems. Similarly to the previous contributions, we focused on enabling diverse redundant execution on this component. However, executing a workload twice in two different cores is something relatively simple with modern programming models (e.g., OpenMP, OpenMPI). The real challenge is in using the limited observability and controllabilitychannels to maintain and guarantee the (time) diversity between these two redundant executions, like the lockstep approach. Note that lockstep is an expensive approach that hijacks halfofthe cores, which are non-visible to the user and cannot be used for non-critical applications. Instead, if a flexible software-only solution for COTS multicores existed, all cores could be used by non-critical applications when not needed for the safety-critical ones. Thus, maximizing their utilization. To tackle this challenge, we proposed a software-only solution with small requirements that can be met by most existing COTS multicore.