Faits : A. Par jugement du 21 juin 2019, le Tribunal correctionnel genevois a reconnu A._ coupable d'infractions aux art. 19 al. 1 let. b, c, d, g et al. 2 let. a de la loi fédérale sur les stupéfiants et les substances psychotropes (LStup; RS 812.121) et d'escroquerie et l'a condamné à une peine privative de liberté de quatre ans, sous déduction de la détention subie avant jugement. Il a prononcé son expulsion du territoire suisse pour cinq ans. B. Par arrêt du 18 novembre 2019, la Chambre pénale d'appel et de révision de la Cour de justice genevoise a rejeté l'appel formé par A._ contre le jugement de première instance, qu'elle a confirmé. En substance, la cour cantonale s'est fondée sur les faits suivants. A._ est né en 1977 en Algérie, pays dont il est ressortissant et où il a suivi sa scolarité jusqu'à l'âge de 16 ans, avant de travailler dans la carrosserie dans le garage de son père. Il a 11 frères et soeurs qui vivent dans ce pays, à l'exception de deux frères qui vivent en France. L'arabe est sa langue maternelle. En 1998, il est allé s'installer à Paris où il a rencontré son épouse, laquelle vivait alors à Genève. Il dit s'être installé définitivement en Suisse après son mariage en 2008 et a obtenu un permis B cette même année. Il est père d'un fils né en 2010 et d'une fille née en 2016. Son épouse a un fils issu d'une union précédente. A._ a travaillé " au noir " à Genève. En 2015, à sa sortie de prison, il a effectué deux stages. En 2016 et en 2017, il a travaillé comme peintre en bâtiment, sur appel, au noir et a pris des cours du soir dans le domaine de la soudure, l'Hospice général couvrant les frais. A son initiative, il est suivi par un organisme de traitement des violences, en lien avec ses problèmes conjugaux et à sa condamnation pour lésions corporelles sur son épouse. Entre une date indéterminée et le 20 juin 2018, A._ a participé à un trafic portant sur plus de 65 kg de haschich et de marijuana. Il a également détenu 976.8 grammes de cocaïne (taux de pureté de 67%). En outre, A._ a dissimulé l'existence de son revenu de 1'000 fr. par mois, de ceux tirés du trafic de stupéfiants ainsi que l'avoir se trouvant sur le compte de son épouse au Portugal, en affirmant ne percevoir ni revenu ni fortune pour la famille dans un formulaire soumis à l'Hospice général et signé le 12 février 2018. Il a ainsi astucieusement induit l'Hospice général en erreur et reçu des prestations sociales indues. Selon l'extrait du casier judiciaire, A._ a été condamné le 13 décembre 2011 à une peine pécuniaire de 50 jours-amende avec sursis durant 3 ans et à une amende pour lésions corporelles simples. Le 26 juin 2014, il a été condamné à une peine pécuniaire pour délit contre la LStup (trafic de plus d'un kg de marijuana entre septembre 2012 et mars 2014), recel, infraction à la loi fédérale sur les armes, violation d'une obligation d'entretien et activité lucrative sans autorisation. Le 21 novembre 2014, il a été condamné à une peine privative de liberté d'un an pour délit contre la LStup (trafic de plus de 10 kg de haschich et marijuana d'avril à septembre 2014) et recel. Il a été libéré conditionnellement le 22 mai 2015 (solde de peine de quatre mois), avec un délai d'épreuve d'un an. C. A._ forme un recours en matière pénale contre la décision cantonale au Tribunal fédéral et conclut, avec suite de frais et dépens, à sa réforme, en ce sens qu'il est renoncé à l'expulser du territoire suisse. En outre, le recourant sollicite le bénéfice de l'assistance judiciaire.