Memória transacional (TM) é uma abstração de programação desenvolvida para arquiteturas de memória compartilhada, que permite ao usuário escrever programas paralelos sem ter que se preocupar com acessos simultâneos a objetos compartilhados. Esta abstração de programação é especialmente projetada para programas com acessos irregulares à memória e comportamento data-driven, para os quais o desenvolvimento de implementações paralelas usando mecanismos de controle de concorrencia de bloqueios, como locks, é complicado, tornando-os propensos a erros de lógica como deadlocks ou livelocks. Várias implementações de memória transacional foram desenvolvidas. Essas implementações podem usar hardware disponível em arquiteturas de computadores modernas ou runtimes que fornecem toda a sincronização de concorrencia necessária. As implementações de software e hardware têm uma série de vantagens e desvantagens que as tornam abaixo do óptimo como uma solução única para todos os aplicativos em geral. Phased Transactional Memory (Phased TM), é uma implementação de TM que busca explorar os benefícios das implementações HW e SW executando transações em fases HW/SW (modos), selecionadas de acordo com as características de cada transação. Um problema específico de implementações de TM em fases é o processo de tomada de decisão necessário para decidir (em run time) o modo de execução e o momento adequado para alternar para outro modo. Esta Tese propõe novos mecanismos de tomada de decisão que não só tiram vantagem do HW (ou seja, o fast-path), mas também procuram reduzir o número de transições de modo, evitando assim overheads desnecessários. Para isso, dois mecanismos de transição foram desenvolvidos considerando uma implementação de TM de três modos: Hardware (HW), Software (SW) e modos de Bloqueio Global (GLOCK). A primeira implementação apresentada nesta Tese, Graph-oriented TM (GoTM), foi inspirada no comportamento data-driven e monotonicamente convergente de programas de grafos. GoTM usa uma medição de taxa commit throughput de cada modo de execução (HW ou SW) como a métrica principal, para acelerar aplicativos típicos em análises de grafos em grande escala. O segundo mecanismo, Commit throughput TM (CTM), elabora ainda mais a métrica de commit throughput, para desenvolver uma solução geral que visa evitar os problemas de over-fitting. CTM é baseado em: (a) uma métrica de commit throughput relativa que compara a evolução do desempenho do programa (aumento ou diminuição) em cada modo de execução; e (b) uma simulação de capacidade de cache que estima o requisito de armazenamento especulativo de transações em execução, que é usada para evitar aborts persistentes relacionados à capacidade en HTM. Nossos resultados experimentais, obtidos usando aplicativos para análise de grafos em grande escala e o benchmark STAMP, mostram que o Phased TM é um mecanismo que melhora o desempenho e a escalabilidade de vários aplicativos da vida real, desde que ofereça mecanismos eficientes de transição de modo.